|
|
(15 intermediate revisions by the same user not shown) |
Line 13: |
Line 13: |
| OS : Android 4.2 Jelly Bean | | OS : Android 4.2 Jelly Bean |
| GPU : Mali? | | GPU : Mali? |
| | |
| | == External Links == |
| | |
| | Get [http://arm.slackware.com/getslack/ Slackware] for arm |
| | |
| | [http://s7.postimg.org/fww1ibfdn/image.png Screenshot] of X windows with fluxbox and wbar. And [http://s15.postimg.org/izdxddkqj/image.png another one]. |
| | |
| | [http://www.techverse.net/fastest-root-android-phone-computer/ Framaroot-1.9.3.apk] |
| | |
| | [https://github.com/gv1/SlackwareOnMT6582/releases SlackwareOnMT6582] page at github, includes [https://github.com/gv1/SlackwareOnMT6582/releases StartX] apk. |
|
| |
|
|
| |
|
| == Rooting the Tablet PC == | | == Rooting the Tablet PC == |
|
| |
|
| I used [http://www.techverse.net/fastest-root-android-phone-computer/ Framaroot-1.9.3.apk] to root the device. | | A tablet with root access is required. I used [http://www.techverse.net/fastest-root-android-phone-computer/ Framaroot-1.9.3.apk] to root the device. |
|
| |
|
| == Installing Linux - Slackware 14.1 - sort of. == | | == Installing Linux - Slackware 14.1, sort of. == |
|
| |
|
| With the problem of not having kernel source for the SOC, and no no bootloader unlock possible yet, next best option was to use a chroot environment. | | With the problem of not having kernel source for the SOC, and no no bootloader unlock possible yet, next best option was to use a chroot environment. Please not that you can try command line stuff with [http://proot.me/ proot] ( which requires no root access). Xorg however requires root permission since /dev/graphics/fb0 requires root permission. |
|
| |
|
| So far, command line mode works fine. Here is the description of how Slackware was installed on to external micro SD Card. Was able to do some basic tests on the frame buffer display. Since there is no VTs available was not able to test Xorg, though could get Mali module compiled and loaded. More details below. | | So far, X windows using Xorg, and command line mode works fine. Here is the description of how Slackware was installed on to external micro SD Card. Was able to do some basic tests on the frame buffer display. |
|
| |
|
| === Preparing SD Card on host computer === | | === Preparing SD Card on host computer === |
Line 44: |
Line 54: |
| cd slackware14.1 | | cd slackware14.1 |
| (cd /path..to../slackware14.1 ; tar cfz - *) | (tar xfz - ) | | (cd /path..to../slackware14.1 ; tar cfz - *) | (tar xfz - ) |
|
| |
|
| |
|
|
| |
|
Line 69: |
Line 78: |
| su | | su |
|
| |
|
| | | ==== chroot to installer ==== |
| ==== chroot to installe ==== | |
|
| |
|
| cd /data/local/tmp | | cd /data/local/tmp |
Line 118: |
Line 126: |
| mountpoint sys || mount -t sysfs sys sys/ | | mountpoint sys || mount -t sysfs sys sys/ |
| mountpoint dev || mount -o bind /dev dev/ | | mountpoint dev || mount -o bind /dev dev/ |
| | test -d system || mkdir system |
| | mountpoint system || mount -o bind /system system |
| export PATH=/usr/bin:/bin:/usr/lib/setup:$PATH | | export PATH=/usr/bin:/bin:/usr/lib/setup:$PATH |
| chroot . /bin/bash | | chroot . /bin/su - |
| su -
| |
|
| |
|
|
| |
|
| From here you can do "normal" Slackware activities, sort of. Main things that were lacking in my case | | From here you can do "normal" Slackware activities, sort of. Main things that were lacking in my case were VTs (ttys). Compiling programs and running programs were ok. I ran couple of frame buffer tests too. Fortunately, removing the VT requirement from Xorg was pretty simple. Here is how it was done. |
| were VTs (ttys). Compiling programs and running programs that require no X windows worked fine. I ran | |
| couple of frame buffer tests too. | |
| | | |
|
| |
|
Line 132: |
Line 139: |
| === Getting Xorg compiled === | | === Getting Xorg compiled === |
|
| |
|
| Ecept for Pointer ( touchscreen ) failure, Xorg seems to be working fine. evtest, xinput tests are showing touchscreen activity, but the cursor seems to be not | | Ecept for Pointer ( touchscreen ) failure, Xorg seems to be working fine. evtest, xinput tests are showing touchscreen activity, but the cursor seems to be not moving. But if a window like xvkbd or xterm or so is launched, you can move the window using the touch screen!. And kvkbd input also works. |
| moving. But if a window like xvkbd or xterm or so is launched, you can move the window using the touch screen!. And kvkbd input also works. | | |
| | |
| | ==== lnx_init.c patch ==== |
| | |
| | [https://github.com/gv1/SlackwareOnMT6582/blob/master/lnx_init.patch lnx_init.patch] |
| | |
| | ==== Compiling xorg-server-1.12.2 ==== |
|
| |
|
| Download [http://www.x.org/releases/X11R7.7/src/everything/xorg-server-1.12.2.tar.bz2 xorg-server-1.12.2], | | Download [http://www.x.org/releases/X11R7.7/src/everything/xorg-server-1.12.2.tar.bz2 xorg-server-1.12.2], |
|
| |
|
|
| |
|
| tar xf xorg-server-1.12.2.tar.bz2
| | tar xf xorg-server-1.12.2.tar.bz2 |
|
| |
|
| Also make changes to xorg-server-1.12.2/hw/xfree86/os-support/linux/lnx\_init.c so that VT / console related code is disabled. See the patch section. | | Also make changes to xorg-server-1.12.2/hw/xfree86/os-support/linux/lnx\_init.c so that VT / console related code is disabled. See the patch section. |
|
| |
|
| cd xorg-server-1.12.2
| | |
| export PKG_CONFIG_PATH=/opt/local/sw/share/pkgconfig:$PKG_CONFIG_PATH
| | cd xorg-server-1.12.2 |
| export PKG_CONFIG_PATH=/opt/local/sw/lib/pkgconfig:$PKG_CONFIG_PATH
| | export PKG_CONFIG_PATH=/opt/local/sw/share/pkgconfig:$PKG_CONFIG_PATH |
| export LD_LIBRARY_PATH=/opt/local/sw/lib:$LD_LIBRARY_PATH
| | export PKG_CONFIG_PATH=/opt/local/sw/lib/pkgconfig:$PKG_CONFIG_PATH |
| export PATH=/opt/local/sw/bin:$PATH
| | export LD_LIBRARY_PATH=/opt/local/sw/lib:$LD_LIBRARY_PATH |
| ./configure --prefix=/opt/local/sw --enable-kdrive --enable-kdrive-evdev --with-xkb-path=/opt/local/sw/share/X11/xkb --with-xkb-output=/var/lib/xkb --with-xkb-bin-directory=/opt/local/sw/bin --with-default-xkb-rules=xorg --with-default-xkb-model=pc104 --with-default-xkb-layout=us --disable-xnest --disable-dmx --disable-xquartz --disable-xwin --disable-xephyr --disable-config-udev --enable-tslib --disable-docs --disable-devel-docs LDFLAGS=-L/opt/local/sw/lib CFLAGS=-I/opt/local/sw/include
| | export PATH=/opt/local/sw/bin:$PATH |
| make -j 3 | | ./configure --prefix=/opt/local/sw --enable-kdrive --enable-kdrive-evdev --with-xkb-path=/opt/local/sw/share/X11/xkb --with-xkb-output=/var/lib/xkb --with-xkb-bin-directory=/opt/local/sw/bin --with-default-xkb-rules=xorg --with-default-xkb-model=pc104 --with-default-xkb-layout=us --disable-xnest --disable-dmx --disable-xquartz --disable-xwin --disable-xephyr --disable-config-udev --enable-tslib --disable-docs --disable-devel-docs LDFLAGS=-L/opt/local/sw/lib CFLAGS=-I/opt/local/sw/include |
| | make -j 3 |
|
| |
|
| If all required packages are not on the system, compilation will fail. Download each of the requiered packags , untar, configure and install. | | If all required packages are not on the system, compilation will fail. Download each of the requiered packags , untar, configure and install. |
|
| |
|
| ./configure --prefix=/opt/local/sw
| | ./configure --prefix=/opt/local/sw |
| make -j 3 install
| | make -j 3 install |
|
| |
|
| Once xorg-server-1.12.2 compilation is succesfull, | | Once xorg-server-1.12.2 compilation is succesfull, |
| make install
| | |
| | make install |
| | | |
| === Compiling additional drivers required === | | === Compiling additional drivers required === |
Line 162: |
Line 177: |
| ==== fbdev ==== | | ==== fbdev ==== |
|
| |
|
| xf86-video-fbdev-0.4.2 | | xf86-video-fbdev-0.4.2 |
| export PKG_CONFIG_PATH=/opt/local/sw/lib/pkgconfig:$PKG_CONFIG_PATH | | export PKG_CONFIG_PATH=/opt/local/sw/lib/pkgconfig:$PKG_CONFIG_PATH |
| ./configure --prefix=/opt/local/sw | | ./configure --prefix=/opt/local/sw |
| | |
| | In src/fbdev.c xf86-video-fbdev-0.4.2/src/fbdev.c, comment: |
|
| |
|
| src/fbdev.c xf86-video-fbdev-0.4.2/src/fbdev.c
| | // #include "mibstore.h" |
| // #include "mibstore.h" | |
|
| |
|
| make -j 3 | | make -j 3 |
| make install | | make install |
|
| |
|
| ==== evdev ==== | | ==== evdev ==== |
Line 187: |
Line 203: |
| and run startx as described below. | | and run startx as described below. |
|
| |
|
| | === xorg.conf === |
|
| |
|
| ==== synaptics ====
| | Copy this file to /etc/X11 |
|
| |
|
| synaptics driver fails with error message relating to Protocol.
| | [https://github.com/gv1/SlackwareOnMT6582/blob/master/xorg.conf xorg.conf] |
|
| |
|
| xf86-input-synaptics-1.6.1.tar.bz2
| |
| ./configure --prefix=/opt/local/sw CFLAGS=-I/opt/local/sw/include/xorg LDFLAGS=-L/opt/local/sw/lib
| |
| make -j 3
| |
| make install
| |
|
| |
|
| When running Xorg,
| | === Running X === |
|
| |
|
| [ 4784.385] (EE) synaptics: mytouchscreen: Synaptics driver unable to detect protocol
| | In the final setup, these manual steps to switch between X and Android is |
| | not required, StartX app and wbar button "Back to Android" does these tasks. |
|
| |
|
| | make sure display is on, |
| | From slackware chroot environment in adb shell [ see section ]: |
|
| |
|
| === Running X ===
| | /system/bin/stop |
| | | startx -- /opt/local/sw/bin/Xorg :0 |
| make sure display is on, and
| | |
| | Try disown / nohup to keep X running when disconnected from PC. |
|
| |
|
| From adb shell as su:
| | Or |
| | Touch and run "StartX" app. |
|
| |
|
| stop
| | Once Finished, |
|
| |
|
| From slackware chroot environment in adb shell [ see section ]:
| | run: |
|
| |
|
| startx -- /opt/local/sw/bin/Xorg -pointer mytouchscreen :0 | | /system/bin/start |
|
| |
|
| Once Finished, from adb shell as su:
| |
|
| |
|
| start
| | Or touch the "back to android" icon on wbar. to return to Android. |
|
| |
|
| === Virtual Keyboard === | | === Virtual Keyboard === |
|
| |
|
| ==== http://homepage3.nifty.com/tsato/xvkbd/ ==== | | ==== xvkbd ==== |
| | |
| | Download [http://homepage3.nifty.com/tsato/xvkbd/ xvkbd] from [http://homepage3.nifty.com/tsato/xvkbd/xvkbd-3.5.tar.gz xvkbd-3.5.tar.gz], and install: |
|
| |
|
| Download [http://homepage3.nifty.com/tsato/xvkbd/xvkbd-3.5.tar.gz xvkbd-3.5.tar.gz], install
| |
| xmkf | | xmkf |
| make | | make |
| make install | | make install |
|
| |
|
| and run:
| | Run: |
|
| |
|
| xvkbd | | xvkbd |
|
| |
|
| | === An application launcher === |
|
| |
|
| === Files === | | ==== wbar ==== |
| ==== xorg.conf ====
| |
|
| |
|
| <pre>
| | Download [https://github.com/warlockcc/wbar wbar] from [https://code.google.com/p/wbar/downloads/detail?name=wbar-2.3.4.tgz&can=2&q= wbar-2.3.4.tgz] at [https://code.google.com/p/wbar/downloads/list wbar downloads at code.google.com] |
| Section "ServerLayout"
| | |
| Identifier "myLaout"
| | ==== .wbar ==== |
| Screen "myScreen"
| | |
| # InputDevice "mymouse"
| | Copy this file to /root/.wbar : |
| InputDevice "mytouchscreen"
| | |
| EndSection
| | [https://github.com/gv1/SlackwareOnMT6582/blob/master/wbar .wbar] |
| | |
| | == Android app to launch X Windows directly from Android == |
| | |
| | === Install apk === |
| | |
| | Install [https://github.com/gv1/SlackwareOnMT6582/releases/download/v0.1-alpha/StartXActivity-release.apk StartXActivity-release.apk] for starting X |
| | windows from Android. You may use adb to install StartX after downloading it. |
| | |
| | adb install ./StartXActivity-release.apk |
| | |
| | Or if you prefer, |
| | |
| | === Create StartX project === |
| | |
| | To build the the apk from scratch, check [https://github.com/gv1/SlackwareOnMT6582 SlackwareOnMT6582] project at github |
| | |
| | Create a project: |
| | |
| | android create project -n StartX -k com.startx.android -a StartXActivity -t 1 -p . |
| | |
| | Copy [https://github.com/gv1/SlackwareOnMT6582/blob/master/StartXActivity.java StartXActivity.java] to src/com/startx/android |
| | |
| | If required, |
| | |
| | keytool -genkey -v -keystore gv.keystore \ |
| | -alias gv_ks -keyalg RSA -keysize 2048 -validity 10000 |
| | |
| | Add to project properties: |
| | key.store=./gv.keystore |
| | key.alias=gv_ks |
| | |
| | Build and install: |
| | ant release install |
| | |
| | ==== StartXActivity.java ==== |
| | Copy this file to StartX/src/com/startx/android before build. |
| | |
| | [https://github.com/gv1/SlackwareOnMT6582/blob/master/StartXActivity.java StartXActivity.java] |
| | |
| | ==== chroot2slackware.sh ==== |
|
| |
|
| Section "Screen"
| | Copy [https://github.com/gv1/SlackwareOnMT6582/blob/master/chroot2slackware.sh chroot2slackware.sh] to /data/local/tmp/ along with |
| Identifier "myScreen"
| |
| Device "myfbdev"
| |
| DefaultDepth 24
| |
| EndSection
| |
|
| |
|
| Section "Device"
| | ==== exitfromslackware.sh ==== |
| Identifier "myFbdev"
| |
| Driver "fbdev"
| |
| Option "fbdev" "/dev/graphics/fb0"
| |
| EndSection
| |
|
| |
|
| Section "InputDevice"
| | This file is called when "Back to Android" wbar button is touched. |
| Identifier "mytouchscreen"
| |
| Driver "evdev"
| |
| # Driver "synaptics"
| |
| Option "Device" "/dev/input/event3"
| |
| # Option "Protocol" "Auto"
| |
| EndSection
| |
| </pre>
| |
|
| |
|
| ==== lnx_init.c patch ====
| | Copy [https://github.com/gv1/SlackwareOnMT6582/blob/master/exitfromslackware.sh exitfromslackware.sh] to /data/local/tmp/ |
|
| |
|
| <pre>
| | Thse files are used by StartX app to launch X windows. |
| --- xorg-server-1.12.2/hw/xfree86/os-support/linux/lnx_init.c 2014-09-04 22:53:13.450000054 +0530
| |
| +++ xorg-server-1.12.2.org/hw/xfree86/os-support/linux/lnx_init.c 2012-05-17 22:39:03.000000000 +0530
| |
| @@ -48,18 +48,15 @@
| |
| static void
| |
| drain_console(int fd, void *closure)
| |
| {
| |
| -#ifdef GV
| |
| errno = 0;
| |
| if (tcflush(fd, TCIOFLUSH) == -1 && errno == EIO) {
| |
| xf86SetConsoleHandler(NULL, NULL);
| |
| }
| |
| -#endif
| |
| }
| |
|
| |
| static void
| |
| switch_to(int vt, const char *from)
| |
| {
| |
| -#ifdef GV
| |
| int ret;
| |
|
| |
| SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt));
| |
| @@ -69,13 +66,11 @@
| |
| SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt));
| |
| if (ret < 0)
| |
| FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
| |
| -#endif
| |
| }
| |
|
| |
| void
| |
| xf86OpenConsole(void)
| |
| {
| |
| -#ifdef GV
| |
| int i, fd = -1, ret;
| |
| struct vt_mode VT;
| |
| struct vt_stat vts;
| |
| @@ -254,13 +249,11 @@
| |
| switch_to(xf86Info.vtno, "xf86OpenConsole");
| |
| }
| |
| }
| |
| -#endif
| |
| }
| |
|
| |
| void
| |
| xf86CloseConsole(void)
| |
| {
| |
| -#ifdef GV
| |
| struct vt_mode VT;
| |
| int ret;
| |
|
| |
| @@ -307,7 +300,6 @@
| |
| }
| |
| }
| |
| close(xf86Info.consoleFd); /* make the vt-manager happy */
| |
| -#endif
| |
| }
| |
|
| |
| int
| |
| </pre>
| |
|
| |
|
| == Running some tests == | | == Running some tests == |
Line 330: |
Line 315: |
| === Testing the framebuffer === | | === Testing the framebuffer === |
|
| |
|
| For these tests, I stopped android "SurfaceFlinger" and freed up /dev/graphics/fb0. by running "stop" | | For these tests, I stopped android "SurfaceFlinger" and freed up /dev/graphics/fb0. by running "stop" command. Before running stop, make sure that the display is on ( not blank ). |
| command. Before running stop, make sure that the display is on ( not blank ). For these tests, I had | |
| two terminals up on the host PC with one of them running just adb shell with su, and other running
| |
| chrooted slackware shell. SurfaceFlinger was stopped from su shell, and tests from Slackware shell.
| |
| | |
| Please not Slackware shell is also running as user root.
| |
|
| |
|
| ==== Stopping android - sort of ==== | | ==== Stopping android - sort of ==== |
Line 341: |
Line 321: |
| Here is how to stop the SurfaceFlinger and get framebuffer free: | | Here is how to stop the SurfaceFlinger and get framebuffer free: |
|
| |
|
| adb shell
| | From Slackware shell in adb: |
| su
| | |
| stop | | stop |
|
| |
|
Line 359: |
Line 339: |
|
| |
|
|
| |
|
| once done, go back to android su shell from adb, and:
| |
|
| |
|
| ==== Getting back to android ==== | | ==== Getting back to android ==== |
| | | |
| start | | Once done, go back to Slackware shell in adb, and: |
|
| | |
| | start |
|
| |
|
| After few seconds android display will be back on. | | After few seconds android display will be back on. |
Line 379: |
Line 359: |
| ==== evtest.log ==== | | ==== evtest.log ==== |
|
| |
|
| <pre>
| | [https://github.com/gv1/SlackwareOnMT6582/blob/master/doc/evtest.log evtest.log] |
| No device specified, trying to scan all of /dev/input/event*
| |
| Available devices:
| |
| /dev/input/event0: mtk-kpd | |
| /dev/input/event1: ACCDET
| |
| /dev/input/event2: hwmdata | |
| /dev/input/event3: mtk-tpd | |
| Select the device event number [0-3]: Input driver version is 1.0.1
| |
| Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
| |
| Input device name: "mtk-tpd"
| |
| Supported events:
| |
| Event type 0 (EV_SYN)
| |
| Event type 1 (EV_KEY)
| |
| Event code 330 (BTN_TOUCH)
| |
| Event type 3 (EV_ABS)
| |
| Event code 0 (ABS_X)
| |
| Value 0
| |
| Min 0
| |
| Max 800
| |
| Resolution 800
| |
| Event code 1 (ABS_Y)
| |
| Value 0
| |
| Min 0
| |
| Max 480
| |
| Resolution 480
| |
| Event code 24 (ABS_PRESSURE)
| |
| Value 0
| |
| Min 0
| |
| Max 255
| |
| Event code 48 (ABS_MT_TOUCH_MAJOR)
| |
| Value 0
| |
| Min 0
| |
| Max 100
| |
| Event code 49 (ABS_MT_TOUCH_MINOR)
| |
| Value 0
| |
| Min 0
| |
| Max 100
| |
| Event code 53 (ABS_MT_POSITION_X)
| |
| Value 0
| |
| Min 0
| |
| Max 800
| |
| Event code 54 (ABS_MT_POSITION_Y)
| |
| Value 0
| |
| Min 0
| |
| Max 480
| |
| Event code 57 (ABS_MT_TRACKING_ID)
| |
| Value 0
| |
| Min 0
| |
| Max 0
| |
| Properties:
| |
| Property type 1 (INPUT_PROP_DIRECT)
| |
| Testing ... (interrupt to exit)
| |
| GV: read 112
| |
| Event: time 1409845467.116675, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
| |
| Event: time 1409845467.116682, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.116687, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.116691, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.116695, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.116699, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.116703, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.133145, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.133151, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.133155, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.133160, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.133164, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.133167, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.148724, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.148730, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.148734, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.148738, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.148742, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.148745, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.164975, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.164981, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.164985, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.164989, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.164994, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.164997, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.180722, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.180727, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.180731, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.180736, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.180740, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.180743, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.196495, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.196501, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.196505, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.196510, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.196514, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.196517, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.211803, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.211809, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 115
| |
| Event: time 1409845467.211813, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 96
| |
| Event: time 1409845467.211818, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.211822, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.211825, -------------- SYN_REPORT ------------
| |
| GV: read 48
| |
| Event: time 1409845467.225500, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
| |
| Event: time 1409845467.225504, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.225507, -------------- SYN_REPORT ------------
| |
| GV: read 112
| |
| Event: time 1409845467.466531, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
| |
| Event: time 1409845467.466536, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.466540, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 341
| |
| Event: time 1409845467.466545, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 151
| |
| Event: time 1409845467.466549, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.466553, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.466556, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.482028, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.482033, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 341
| |
| Event: time 1409845467.482038, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 151
| |
| Event: time 1409845467.482042, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.482046, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.482049, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.497971, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.497977, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 341
| |
| Event: time 1409845467.497981, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 151
| |
| Event: time 1409845467.497986, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.497990, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.497993, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.514030, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.514036, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 341
| |
| Event: time 1409845467.514040, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 151
| |
| Event: time 1409845467.514044, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.514048, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.514051, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.530188, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.530194, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 341
| |
| Event: time 1409845467.530198, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 151
| |
| Event: time 1409845467.530202, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.530206, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.530210, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.545804, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.545809, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 341
| |
| Event: time 1409845467.545813, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 151
| |
| Event: time 1409845467.545818, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.545822, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.545825, -------------- SYN_REPORT ------------
| |
| GV: read 48
| |
| Event: time 1409845467.559686, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
| |
| Event: time 1409845467.559690, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.559693, -------------- SYN_REPORT ------------
| |
| GV: read 112
| |
| Event: time 1409845467.880062, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
| |
| Event: time 1409845467.880067, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.880072, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 678
| |
| Event: time 1409845467.880076, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 130
| |
| Event: time 1409845467.880080, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.880084, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.880088, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.895834, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.895839, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 678
| |
| Event: time 1409845467.895844, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 130
| |
| Event: time 1409845467.895848, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.895852, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.895855, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.911757, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.911762, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 678
| |
| Event: time 1409845467.911767, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 130
| |
| Event: time 1409845467.911771, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.911775, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.911778, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.927833, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.927838, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 680
| |
| Event: time 1409845467.927842, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 129
| |
| Event: time 1409845467.927847, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.927851, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.927854, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.944420, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.944426, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 681
| |
| Event: time 1409845467.944430, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 129
| |
| Event: time 1409845467.944434, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.944438, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.944442, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.959239, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.959244, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 683
| |
| Event: time 1409845467.959249, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 129
| |
| Event: time 1409845467.959253, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.959257, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.959260, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845467.974974, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845467.974980, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 685
| |
| Event: time 1409845467.974984, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 129
| |
| Event: time 1409845467.974988, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845467.974992, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.974996, -------------- SYN_REPORT ------------
| |
| GV: read 48
| |
| Event: time 1409845467.989318, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
| |
| Event: time 1409845467.989321, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845467.989324, -------------- SYN_REPORT ------------
| |
| GV: read 112
| |
| Event: time 1409845468.246567, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
| |
| Event: time 1409845468.246571, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.246576, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 659
| |
| Event: time 1409845468.246580, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 419
| |
| Event: time 1409845468.246584, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.246589, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.246592, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.262652, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.262657, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 659
| |
| Event: time 1409845468.262662, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 419
| |
| Event: time 1409845468.262666, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.262670, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.262673, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.278454, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.278460, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 659
| |
| Event: time 1409845468.278464, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 419
| |
| Event: time 1409845468.278468, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.278473, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.278476, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.293932, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.293938, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 653
| |
| Event: time 1409845468.293942, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 419
| |
| Event: time 1409845468.293946, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.293950, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.293953, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.309429, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.309434, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 639
| |
| Event: time 1409845468.309438, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 416
| |
| Event: time 1409845468.309443, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.309447, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.309450, -------------- SYN_REPORT ------------
| |
| GV: read 48
| |
| Event: time 1409845468.323482, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
| |
| Event: time 1409845468.323486, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.323489, -------------- SYN_REPORT ------------
| |
| GV: read 112
| |
| Event: time 1409845468.596393, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
| |
| Event: time 1409845468.596397, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.596402, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 226
| |
| Event: time 1409845468.596406, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 302
| |
| Event: time 1409845468.596410, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.596414, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.596417, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.612126, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.612132, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 226
| |
| Event: time 1409845468.612136, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 302
| |
| Event: time 1409845468.612140, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.612144, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.612147, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.628256, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.628262, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 226
| |
| Event: time 1409845468.628266, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 302
| |
| Event: time 1409845468.628271, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.628275, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.628278, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.644136, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.644142, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 226
| |
| Event: time 1409845468.644146, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 302
| |
| Event: time 1409845468.644151, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.644155, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.644158, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.659867, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.659873, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 226
| |
| Event: time 1409845468.659877, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 302
| |
| Event: time 1409845468.659882, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.659886, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.659889, -------------- SYN_REPORT ------------
| |
| GV: read 48
| |
| Event: time 1409845468.673538, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
| |
| Event: time 1409845468.673541, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.673544, -------------- SYN_REPORT ------------
| |
| GV: read 112
| |
| Event: time 1409845468.946001, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
| |
| Event: time 1409845468.946005, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.946010, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 681
| |
| Event: time 1409845468.946014, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845468.946018, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.946022, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.946025, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.962071, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.962077, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 681
| |
| Event: time 1409845468.962081, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845468.962085, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.962089, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.962093, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.977741, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.977747, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 681
| |
| Event: time 1409845468.977751, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845468.977755, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.977759, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.977762, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845468.993678, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845468.993684, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 681
| |
| Event: time 1409845468.993688, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845468.993692, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845468.993696, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845468.993700, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.010083, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.010089, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 681
| |
| Event: time 1409845469.010093, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845469.010097, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.010101, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.010104, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.026187, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.026193, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 665
| |
| Event: time 1409845469.026197, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 357
| |
| Event: time 1409845469.026201, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.026205, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.026209, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.041432, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.041437, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 640
| |
| Event: time 1409845469.041442, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 357
| |
| Event: time 1409845469.041446, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.041450, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.041453, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.057294, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.057299, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 581
| |
| Event: time 1409845469.057304, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 364
| |
| Event: time 1409845469.057308, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.057312, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.057315, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.073883, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.073889, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 540
| |
| Event: time 1409845469.073893, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 364
| |
| Event: time 1409845469.073897, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.073901, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.073905, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.089886, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.089892, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 496
| |
| Event: time 1409845469.089896, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 364
| |
| Event: time 1409845469.089900, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.089904, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.089908, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.105335, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.105340, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 450
| |
| Event: time 1409845469.105344, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 364
| |
| Event: time 1409845469.105349, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.105353, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.105356, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.121183, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.121188, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 404
| |
| Event: time 1409845469.121192, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845469.121197, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.121201, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.121204, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.136794, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.136799, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 360
| |
| Event: time 1409845469.136803, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845469.136808, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.136812, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.136815, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.152605, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.152611, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 312
| |
| Event: time 1409845469.152615, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 360
| |
| Event: time 1409845469.152619, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.152623, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.152626, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.169594, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.169599, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 270
| |
| Event: time 1409845469.169604, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 366
| |
| Event: time 1409845469.169608, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.169612, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.169615, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.185263, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.185268, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 236
| |
| Event: time 1409845469.185273, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 373
| |
| Event: time 1409845469.185277, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.185281, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.185284, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.200843, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.200848, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 207
| |
| Event: time 1409845469.200853, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 376
| |
| Event: time 1409845469.200857, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.200861, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.200864, -------------- SYN_REPORT ------------
| |
| GV: read 96
| |
| Event: time 1409845469.216857, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 1
| |
| Event: time 1409845469.216863, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 207
| |
| Event: time 1409845469.216867, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 376
| |
| Event: time 1409845469.216871, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
| |
| Event: time 1409845469.216875, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.216878, -------------- SYN_REPORT ------------
| |
| GV: read 48
| |
| Event: time 1409845469.230419, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
| |
| Event: time 1409845469.230423, ++++++++++++++ SYN_MT_REPORT ++++++++++++
| |
| Event: time 1409845469.230426, -------------- SYN_REPORT ------------
| |
| </pre>
| |
|
| |
|
| === Running xinput === | | === Running xinput === |
|
| |
|
| xinput --list
| | xinput --list |
|
| |
|
| <pre> | | <pre> |
Line 814: |
Line 376: |
| ==== xinput log ==== | | ==== xinput log ==== |
|
| |
|
| xinput test 6
| | xinput test 6 |
|
| |
|
| <pre> | | <pre> |
Specifications of the Tablet PC which was used here
Processor : Arm Cortex A7, 1.3 GHz dual core.
: ARMv7 Processor rev 3 (v7l),
Hardware : MT8312
SOC : mt6582.
Memory : 512MB RAM
Storage : 4GB Built in storage.
Micro SD : Slot for upto 32GB
Display : 7" WVGA 800x480
OS : Android 4.2 Jelly Bean
GPU : Mali?
External Links
Get Slackware for arm
Screenshot of X windows with fluxbox and wbar. And another one.
Framaroot-1.9.3.apk
SlackwareOnMT6582 page at github, includes StartX apk.
Rooting the Tablet PC
A tablet with root access is required. I used Framaroot-1.9.3.apk to root the device.
Installing Linux - Slackware 14.1, sort of.
With the problem of not having kernel source for the SOC, and no no bootloader unlock possible yet, next best option was to use a chroot environment. Please not that you can try command line stuff with proot ( which requires no root access). Xorg however requires root permission since /dev/graphics/fb0 requires root permission.
So far, X windows using Xorg, and command line mode works fine. Here is the description of how Slackware was installed on to external micro SD Card. Was able to do some basic tests on the frame buffer display.
Preparing SD Card on host computer
Use fdisk to create one or two partitions, one for ext4 and other ( optional ) swap partition. Once these are created, assuming the device on host is /dev/sdc,
mkfs.ext4 /dev/sdc1
sync
eject sdc
eject -t sdc
mkdir slack
mount /dev/sdc1 slack
cd slack
mkdir sl
cd sl
If you don't have Slackware installation files, Get Slackware Arm first.
mkdir slackware14.1
cd slackware14.1
(cd /path..to../slackware14.1 ; tar cfz - *) | (tar xfz - )
initrd-kirkwood.cpio contains the setup program, but since I couldn't boot with custom initrd, sdc1 /sl area is prepared to have the installation files.
cpio -id < initrd-kirkwood.cpio
sync
umount slack
Now that the sd card is ready for installation:
eject sdc
and plug it into the device. Once that is done,
Getting installer ready
Now plug the card in tablet pc, boot, from host computer,
starting a adb shell with su
adb shell
su
chroot to installer
cd /data/local/tmp
mkdir slackware
mount /dev/block/mmcblk1p1 slackware
cd slackware/sl
export PATH=/data/local/tmp/bin:$PATH
mountpoint proc || mount -t proc none proc/
mountpoint sys || mount -t sysfs sys sys/
mountpoint dev || mount -o bind /dev dev/
export PATH=/usr/bin:/bin:/usr/lib/setup:$PATH
pushd /dev
ln -s /dev/block/mmc1blk* .
popd
chroot . /bin/bash
mount -t ext4 /dev/mmcblk1p1 mnt
Running setup
Install Slackware onto mmcblk1p1, from pre mounted directory, sdc1 : /slackware14.1/slackware
setup
Proceed and select /dev/mmcblk1p1 as target, no format
For source, select pre mounted directory option, /slackware14.1/slackware
Complete installation, and configuration
Once the complete installation is done,
umount proc
umount sys
umount dev
sync
cd ../..
umount slackware
Getting into installed Slackware:
Running slackware su shell
adb shell
su
mount /dev/block/mmcblk1p1 slackware
cd slackware
mountpoint proc || mount -t proc none proc/
mountpoint sys || mount -t sysfs sys sys/
mountpoint dev || mount -o bind /dev dev/
test -d system || mkdir system
mountpoint system || mount -o bind /system system
export PATH=/usr/bin:/bin:/usr/lib/setup:$PATH
chroot . /bin/su -
From here you can do "normal" Slackware activities, sort of. Main things that were lacking in my case were VTs (ttys). Compiling programs and running programs were ok. I ran couple of frame buffer tests too. Fortunately, removing the VT requirement from Xorg was pretty simple. Here is how it was done.
Getting Xorg up and running - kind of
Getting Xorg compiled
Ecept for Pointer ( touchscreen ) failure, Xorg seems to be working fine. evtest, xinput tests are showing touchscreen activity, but the cursor seems to be not moving. But if a window like xvkbd or xterm or so is launched, you can move the window using the touch screen!. And kvkbd input also works.
lnx_init.c patch
lnx_init.patch
Compiling xorg-server-1.12.2
Download xorg-server-1.12.2,
tar xf xorg-server-1.12.2.tar.bz2
Also make changes to xorg-server-1.12.2/hw/xfree86/os-support/linux/lnx\_init.c so that VT / console related code is disabled. See the patch section.
cd xorg-server-1.12.2
export PKG_CONFIG_PATH=/opt/local/sw/share/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/opt/local/sw/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/local/sw/lib:$LD_LIBRARY_PATH
export PATH=/opt/local/sw/bin:$PATH
./configure --prefix=/opt/local/sw --enable-kdrive --enable-kdrive-evdev --with-xkb-path=/opt/local/sw/share/X11/xkb --with-xkb-output=/var/lib/xkb --with-xkb-bin-directory=/opt/local/sw/bin --with-default-xkb-rules=xorg --with-default-xkb-model=pc104 --with-default-xkb-layout=us --disable-xnest --disable-dmx --disable-xquartz --disable-xwin --disable-xephyr --disable-config-udev --enable-tslib --disable-docs --disable-devel-docs LDFLAGS=-L/opt/local/sw/lib CFLAGS=-I/opt/local/sw/include
make -j 3
If all required packages are not on the system, compilation will fail. Download each of the requiered packags , untar, configure and install.
./configure --prefix=/opt/local/sw
make -j 3 install
Once xorg-server-1.12.2 compilation is succesfull,
make install
Compiling additional drivers required
fbdev
xf86-video-fbdev-0.4.2
export PKG_CONFIG_PATH=/opt/local/sw/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/opt/local/sw
In src/fbdev.c xf86-video-fbdev-0.4.2/src/fbdev.c, comment:
// #include "mibstore.h"
make -j 3
make install
evdev
xf86-input-evdev-2.7.0
./configure --prefix=/opt/local/sw
src/Makefile:
evdev_drv_la_LIBADD = $(MTDEV_LIBS) $(UDEV_LIBS)
( if not done, causes evdev_drv.so: undefined symbol: udev_new when Xorg is ran)
make -j 3
make install
Once installed make an xorg.conf [ see xorg.conf section ] in /etc/X11/
and run startx as described below.
xorg.conf
Copy this file to /etc/X11
xorg.conf
Running X
In the final setup, these manual steps to switch between X and Android is
not required, StartX app and wbar button "Back to Android" does these tasks.
make sure display is on,
From slackware chroot environment in adb shell [ see section ]:
/system/bin/stop
startx -- /opt/local/sw/bin/Xorg :0
Try disown / nohup to keep X running when disconnected from PC.
Or
Touch and run "StartX" app.
Once Finished,
run:
/system/bin/start
Or touch the "back to android" icon on wbar. to return to Android.
Virtual Keyboard
xvkbd
Download xvkbd from xvkbd-3.5.tar.gz, and install:
xmkf
make
make install
Run:
xvkbd
An application launcher
wbar
Download wbar from wbar-2.3.4.tgz at wbar downloads at code.google.com
.wbar
Copy this file to /root/.wbar :
.wbar
Android app to launch X Windows directly from Android
Install apk
Install StartXActivity-release.apk for starting X
windows from Android. You may use adb to install StartX after downloading it.
adb install ./StartXActivity-release.apk
Or if you prefer,
Create StartX project
To build the the apk from scratch, check SlackwareOnMT6582 project at github
Create a project:
android create project -n StartX -k com.startx.android -a StartXActivity -t 1 -p .
Copy StartXActivity.java to src/com/startx/android
If required,
keytool -genkey -v -keystore gv.keystore \
-alias gv_ks -keyalg RSA -keysize 2048 -validity 10000
Add to project properties:
key.store=./gv.keystore
key.alias=gv_ks
Build and install:
ant release install
StartXActivity.java
Copy this file to StartX/src/com/startx/android before build.
StartXActivity.java
chroot2slackware.sh
Copy chroot2slackware.sh to /data/local/tmp/ along with
exitfromslackware.sh
This file is called when "Back to Android" wbar button is touched.
Copy exitfromslackware.sh to /data/local/tmp/
Thse files are used by StartX app to launch X windows.
Running some tests
Testing the framebuffer
For these tests, I stopped android "SurfaceFlinger" and freed up /dev/graphics/fb0. by running "stop" command. Before running stop, make sure that the display is on ( not blank ).
Stopping android - sort of
Here is how to stop the SurfaceFlinger and get framebuffer free:
From Slackware shell in adb:
stop
Now the display goes blank, with backlight on.
Get one of these tests.
fbtest or
Paint-pixels-to-screen- via-linux-framebuffer or
qtopiacore-testingframebuffer All these tests worked on the Tablet. Transfer the tests to tablet using adb push
command.
from Slackware shell, running under adb shell:
gcc fbtest.c
./a.out
Getting back to android
Once done, go back to Slackware shell in adb, and:
start
After few seconds android display will be back on.
Running evtest
Download evtest.c.
gcc -o gcc -o evtest evtest.c
./evtest
see evtest.log for sample outpu
evtest.log
evtest.log
Running xinput
xinput --list
â¡ Virtual core pointer id=2 [master pointer (3)]
â â³ Virtual core XTEST pointer id=4 [slave pointer (2)]
â â³ mytouchscreen id=6 [slave pointer (2)]
⣠Virtual core keyboard id=3 [master keyboard (2)]
â³ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
xinput log
xinput test 6
motion a[0]=53 a[1]=58 a[2]=0 a[3]=1 a[4]=0
button press 1 a[0]=53 a[1]=58 a[2]=0 a[3]=1 a[4]=0
button release 1 a[0]=53 a[1]=58
motion a[0]=513 a[1]=91 a[2]=0 a[3]=1 a[4]=0
button press 1 a[0]=513 a[1]=91 a[2]=0 a[3]=1 a[4]=0
button release 1 a[0]=513 a[1]=91
motion a[0]=659 a[1]=436 a[2]=0 a[3]=1 a[4]=0
button press 1 a[0]=659 a[1]=436 a[2]=0 a[3]=1 a[4]=0
button release 1 a[0]=659 a[1]=436
motion a[0]=624 a[1]=152 a[2]=0 a[3]=1 a[4]=0
button press 1 a[0]=624 a[1]=152 a[2]=0 a[3]=1 a[4]=0
motion a[0]=577 a[1]=174
motion a[0]=501 a[1]=203
motion a[0]=457 a[1]=219
motion a[0]=411 a[1]=232
motion a[0]=371 a[1]=240
motion a[0]=341 a[1]=245
button release 1 a[0]=341 a[1]=245