Saturday, March 1, 2014

Kobo Aura HD: Bugfix the subquality in the android kernel - WiFi, USB, frontlight and rotate tap zones

I fixed the subquality in the Aura HD android kernel. Practically all things work properly now: WiFi, USB, frontlight and the rotate tap zones. ADB also works, here is the instructions about how to make that the computer could detect the device.

Firstly you need to download the patches: Android System.tar.bz2 and aura_hd_android_kernel.uboot.
Now you need to create the folder named "android.patches" on the SD card with Android and you need to copy these two files into that folder.

To apply these fixes you need the computer with Linux. If you don't have the computer with Linux you can use any live-CD. I recommend Debian, it is for it I'll give commands' examples. So download the iso-file by the link above and burn it to the CD. Or you can make the bootable USB-stick from this iso-file. If you have only one computer then you should print this instruction. Or you can rewrite it by hand. :) The computer must be connected to the Internet. It'd better have a wired connection than wireless. Boot the computer from the created CD or USB-stick. In "Boot menu" you should choose first item - "Live (486)". After the finish booting the next prompt will appear:

user@debian:~$

Install software that will be needed (that you should type from the keyboard is blue bold):

user@debian:~$ sudo aptitude install lsscsi
The following NEW packages will be installed:
  lsscsi 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 35.8 kB of archives. After unpacking 104 kB will be used.
Get: 1 http://http.debian.net/debian/ wheezy/main lsscsi i386 0.26-2 [35.8 kB]
Fetched 35.8 kB in 0s (77.4 kB/s)
Selecting previously unselected package lsscsi.
(Reading database ... 57355 files and directories currently installed.)
Unpacking lsscsi (from .../lsscsi_0.26-2_i386.deb) ...
Processing triggers for man-db ...
Setting up lsscsi (0.26-2) ...
user@debian:~$

Now you have to insert the SD card with Android into the card reader. If you have an external card reader or USB-microSD adapter you have to plug it to your computer. Next you need to discover the device name for the card reader in Linux system:

user@debian:~$ lsscsi
[0:0:0:0]    cd/dvd  Optiarc  DVD RW AD-7170A  1.02  /dev/sr0 
[2:0:0:0]    disk    ATA      FUJITSU MHW2120B 0000  /dev/sda 
[10:0:0:0]   disk    Generic- Card Reader      1.00  /dev/sdb 
user@debian:~$

or

user@debian:~$ lsscsi
[2:0:0:0]    disk    ATA      ST31000528AS     CC38  /dev/sda
[3:0:0:0]    cd/dvd  Optiarc  DVD RW AD-7240S  1.03  /dev/sr0
[10:0:0:0]   disk    Generic  Storage Device   0.00  /dev/sdb
user@debian:~$

In my case the card reader device name is /dev/sdb and this name you will have to substitute instead /dev/SDCARD in the commands that will be given below.

Next you need to refresh cache for the SD card's partition table:


user@debian:~$ sudo fdisk -l /dev/SDCARD

Disk /dev/sdb: 7901 MB, 7901020160 bytes
244 heads, 62 sectors/track, 1020 cylinders, total 15431680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00079b22

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1           61440    11562165     5750363    b  W95 FAT32
/dev/sdb2        11562166    12986367      712101   83  Linux
/dev/sdb3        12986368    13391871      202752   83  Linux

user@debian:~$

Mount the SD card partition that contains the patches:

user@debian:~$ sudo mount /dev/SDCARD1 /mnt
user@debian:~$

Copy the patches from the SD card:

user@debian:~$ cp -Rv /mnt/android.patches/ ~
`/mnt/android.patches/Android System.tar.bz2' -> `/home/user/android.patches/Android System.tar.bz2'
`/mnt/android.patches/aura_hd_android_kernel.uboot' -> `/home/user/android.patches/aura_hd_android_kernel.uboot'
user@debian:~$

Unmount the SD card:

user@debian:~$ sudo umount /mnt
user@debian:~$

Mount the Android's system partition on the SD card to apply the patch:


user@debian:~$ sudo mount /dev/SDCARD3 /mnt
user@debian:~$

Go to the partition that was mounted earlier:


user@debian:~$ cd /mnt
user@debian:/mnt$

Apply the patch:


user@debian:/mnt$ sudo tar xvf ~/android.patches/Android\ System.tar.bz2
system/
system/wifi/
system/wifi/bcmdhd.ko
system/wifi/sdio_wifi_pwr.ko
user@debian:/mnt$

Go to the home folder:

user@debian:/mnt$ cd ~
user@debian:~$

Unmount the SD card:

user@debian:~$ sudo umount /mnt
user@debian:~$

Go to the folder that contains the patches:

user@debian:~$ cd ~/android.patches/
user@debian:~/android.patches$

Apply the rest patch. (WARNING! Make sure you take the right device for the next steps.)

user@debian:~/android.patches$ sudo dd if=./aura_hd_android_kernel.uboot \
>  of=/dev/SDCARD seek=2048 bs=512
4851+1 records in
4851+1 records out
2484196 bytes (2.5 MB) copied, 0.802216 s, 3.1 MB/s
user@debian:~/android.patches$

That's all. You can boot the updated Android now.


I was asked on one of the forums: "Why are you tormenting us with this Linux? Would you make the new SD card where all those patches have already been applied?" Yes. That would be simplier for non advanced users and I made that image. It is here: 2014-02-28_Android_Kobo_Aura_HD.7z

Here is the homescreen screenshot:

And the photos:
The Front Light is turned on:

The Front Light is turned off:




Wednesday, February 5, 2014

Booting Android from external SD on Kobo Aura HD

Looking through http://phj.hu/auraHD/ for information about running Android on Aura HD I've stumbled to the idea to run Android from the external SD. I started to investigate this matter and as a result I was able to realize this idea. You won't even need to disassemble the device. Below is a short instruction on how to run Android from the external card.

The first thing you need to download the SD card image with Android: 2014-02-02_Android_Kobo_AuraHD.7z. Here is the updated image: 014-02-28_Android_Kobo_Aura_HD.7z. Or here: https://www.dropbox.com/s/uc187pmcnelk9yq/2014-02-28_Android_Kobo_Aura_HD.7z. To create a SD card from this image you need Flash Drive Image Writer and at least 8GB miŅroSD card. You can use micro SD card up to 32GB, you only need to move the last two partitions to the end of the card and extend the first partition. After you create the card you'll need to delete the folder .kobo from the created SD card. (Only for the old (2014-02-02_Android_Kobo_AuraHD.7z) image).

Now you are ready to install the patch that lets you run Android from the external SD. First we create a backup internal SD card. You need to install this patch (fix-udev-tgz.zip), otherwise the device won't see the external card, which will be used to save the backup. Connect your device to your computer through USB and unzip fix-udev-tgz.zip to the folder named .kobo which is located on the device. Next you need to safely unmount and disconnect the device from the computer. Then the device will be upgrading and rebooting. Creating a backup is a long process, it took me about 15 minutes. Now you have to download the main patch (dualboot-android-aurahd.zip). Connect your device to your computer through USB and unzip dualboot-android-aurahd.zip to the folder named .kobo which is located on the device. Next you need to safely unmount and disconnect the device from the computer. Then the device will be upgrading and rebooting. During the upgrade will be created backup, so be prepared for a long wait.

After the device will reboot you will be able to choose which system to boot. If you press the backlight button when the device turns on then Android will boot from the external SD card which was created earlier. If backlight button isn't pressed the standard firmware will boot from the internal SD.