Installing Linux on MyAudio Tablet Series9
Recently I recieved a MyAudio Tablet Series9 as a gift. From the factory it runs some version of Android, but I already got enough Android devices. Instead I wanted to play a bit with a basic Linux install.
This tablet is based on the AllWinner A10 System on a Chip. Some of these instructions might work for other systems based on the same chip set:
Step 1: Install the rescue system from http://forum.doozan.com/read.php?6,9396 on a SD-card.
You can configure network settings in rescue/interfaces and rescue/wpa_supplicant.conf.
Step 2: Boot the rescue system.
The MyAudio table will boot from the SD-card if it contains a bootable system, so this is quite easy. The first time you boot the rescue system tries to locate a system.bin file from the tablet. this file contains the hardware configuration and is needed for initializing all the hardware. This means that the screen can't be initialized the first time you boot and will just appear off.
Unless the system automatically boots again you need to locate the system.bin yourself from the tablet. It is usually located on /dev/nanda and have names like system.bin, script.bin, or evb.bin. To find the file you can use the log the rescue system places in log/deviceinfo.log on the SD-card during boot.
You should now have console access to the tablet and using a USB keyboard you should be able to work in the console.
Step 3: Setting up the network
Having configured rescue/interfaces and rescue/wpa_supplicant.conf the network ought to work. I am experiencing some problems getting it to connect to my Access Point (using WPA2). Patience works, but you might need to monitor the status with wpa_cli(8) and then run udhcp -i wlan0 when it succeeds.
Step 4: Install Debian using the installer at http://forum.doozan.com/read.php?6,8906
This just worked fine...
Step 5: Getting the touch screen to work.
The system.bin file can be decoded with the fexc utility either available on the rescue system (compiled for arm) of from https://github.com/linux-sunxi/sunxi-tools. Finding the ctp_para section we can see that this tablet uses a ft5x touch screen.
Adding ft5x_ts to /etc/modules on our installed system will make sure that the correct kernel module gets loaded on boot time. But for some reason the kernel driver and the X11 evdev driver will not talk together. So we need to compile our own kernel patched as described on https://www.miniand.com/forums/forums/development/topics/how-do-i-get-the-lcd-display-and-touch-screen-working-on-an-a10-tablet#post-1225.
I have made kernel packages for Debian available at http://hacking.dk/files/linux-image-3.0.57-sun4i+_1.0+nomultitouch_armhf.deb or http://hacking.dk/files/linux-image-3.4.24-sun4i+_1.0+nomultitouch_armhf.deb.
Install the kernel package you want and run this as root:
# KERNEL_VERSION=3.4.24-sun4i+ # /usr/bin/mkimage -A arm -O linux -T kernel -C none -a 0x40008000 -e 0x40008000 -n Linux-$KERNEL_VERSION -d /boot/vmlinuz-$KERNEL_VERSION /boot/uImage # /usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-$KERNEL_VERSION -d /boot/initrd.img-$KERNEL_VERSION /boot/uInitrd
After a reboot X11 will respond to the touch screen, but ...
Step 6: Configure the touch screen
... the pointer does not point where I touch the screen. The transformation between the points are wrong. This is fixed by adding this to your xorg.conf:
Section "InputClass" Identifier "touchscreen" MatchProduct "ft5x_ts" Option "TransformationMatrix" "0 1 0 1 0 0 0 0 1" Option "Calibration" "0 768 0 1024" EndSection
or more dynamically by running:
$ xinput set-prop ft5x_ts "Coordinate Transformation Matrix" 0 1 0 1 0 0 0 0 1 $ xinput set-prop ft5x_ts "Evdev Axis Calibration" 0 768 0 1024
For more information about the Transformation Matrix, see the X.Org Wiki
Step 7: Install a on-screen keyboard.
I have not found the perfect keyboard application yet. Currently I am using matchbox-keyboard