Kobo Touch Tablet eReader

May 2011 sees a few touch-screen tablet eReaders passing FCC. They are adding a lot of competitions to the tablet market, a very good thing to the consumers.

Kobo Touch is the one with high expectations. It features a Freescale i.MX508 processor. This true SOC has an 800 MHZ ARM Cortex-A8 CPU and can peacefully parse PDF files with 256 onboard KB of L2 cache memory, with an optimized pipeline wired specifically for the image algorithms, and an OpenVGTM 2-D graphics accelerator. The details of it is under a 90-day confidentiality.

History:

Kobo Board

The first generation Kobo eReader (original) was released in May 2010. A tear-down shows its internal chipset: A Samsung S3C2440 mobile application processor, internally an ARM9 (920T) core at 400 MHz, but lacking 2D/3D capabilities. This article has a review written back in May 2010. The FCC filing can be found by searching its FCC ID ‘NOIKBN416’, lots of internal and external photos. Or see here for another disassembling.

The 2nd generation, Kobo Wireless, adds the wifi ability. It may have a FCC ID NOIKBN647. The processor should be iMX353 or iMX357, according to the photos.

Kobo Wifi

Kobo Wifi w iMX353

Kobo Wifi w iMX357

This is a great wiki page for techies. The source code for both the original and wifi versions are dumped to Github. Some awesome exploration and enhancement work are in progress. Look at this forum post about how to run updated firmware, and the sticky posts on Kobo Reader Forum.

Advertisements

About minghuasweblog

a long time coder
This entry was posted in All, Hardware and tagged , , . Bookmark the permalink.

4 Responses to Kobo Touch Tablet eReader

  1. mailgeek says:

    github now has the latest kernel and uboot tar balls.

  2. mailgeek says:

    And more hacks by searching for “kobo linux hack” on google: http://a-hackers-craic.blogspot.com.au/search/label/kobo

  3. soapyfrogs says:

    http://blog.ringerc.id.au/2011/01/kobo-and-kobo-wifi-hacking.html
    About the Kobo

    The Kobo is a great device – it has a few flaws, but may good points that greatly outweigh those flaws. The original Kobo was based on the Netronix EB600, the same board as the Cool-er reader, Astak Mentor Lite, booq, and numerous other devices. Netronix’s website is scary-bad, but their products are pretty nice. It’s not 100% clear if the Kobo Wifi is still an EB600 product – the kernel refers to the “imx357” – but it’s certainly Netronix.

    Kobo good points include price, format support, gorgeous eInk screen, light weight and nice feel, and a nice-to-use UI. It’s also extremely moddable. It uses a nice standard USB mass storage interface for transferring books so you don’t need dedicated vendor crapware applications. With the -wifi you can buy books directly on the device, and with the old version you can use the Adobe Digital Editions app if you don’t want to use the Kobo application to buy DRM’d books. Support for DRM-free books is perfect, and is just a matter of dropping them onto the flash.

    Bad points include somewhat slow menu navigation (some say page turns too, but I find those just fine), lack of full-justified text display option, useless Bluetooth in the 1st gen, and the inability to remove books from the “currently reading” list. It also has a long pause after unplugging it when you’ve added books, during which it scans them and adds them to the internal SQLite catalog. It’s a pity the Kobo Desktop application can’t be used for this while it’s connected, though it’s wonderful that the device can do it its self and doesn’t rely on such an application.

    Later firmwares improve some prior issues dramatically, allowing things like charging while reading, and are strongly recommended. The latest firmware is out for both the Kobo and Kobo Wifi; they haven’t dropped support for the old generation of hardware, which they deserve real credit for. The use of FAT32 means it risks file system corruption if it’s unplugged while transferring books – but this will only happen if you mistreat it, won’t cause the device to fail to boot or anything, and is trivial to fix.

    The Kobo is massively improved by the use of the free and open source Calibre e-Book management software, which is vastly superior to the Kobo Desktop application in every way. You don’t need any management app at all (thanks to USB mass storage support) but Calibre is wonderful for document conversion and cleanup, management, automatic conversion of newsfeeds to ebooks, etc.
    Kobo modding – hardware/software info

    First: Do not try to reflash your Kobo with firmwares from other EB600 devices. Reports from the mobileread.com forums suggest that this will render your device nonfunctional and make it impossible to restore the original firmwares, though others report having successfully converted a Kobo into a Cool-ER Reader. If you try it, make sure you can afford to replace your eReader or are a JTAG wizard before you try converting it to the Cool-ER firmware or anything like that. At the very least, make sure you take a disk image of its MicroSD card first.

    There is much to be learned about the Kobo and many other devices on the MobileRead forums. I’m ringerc there, though I’m not a big forum user so you’re better off commenting here or emailing me.

    The kobo’s kernel, operating system, and user data is stored on an onboard 2GB MicroSD card. There’s also a full size externally accessible SD card slot for add-on storage. There are three partitions on the internal microSD – a recovery root FS (ext3), the main root FS (ext3) and the user data partition (fat32). The fat32 partition is exported over USB as a mass storage device when the device is connected in “manage library” mode. The MicroSD card has some unpartitioned space before the recovery partition, where it stores the boot splash screen (800x600x4 Windows BMP), kernel, bootloader, hardware config data, epson display setup data, and probably more.

    Because everything is on MicroSD, it’s wonderful to hack on. Just pop it open, disk image the MicroSD card using a MicroSD adapter in a PC, and you can recover from pretty much whatever screwup you might make without attacking a flash chip with a soldering iron or learning your JTAG voodoo.

    The Kobo (original) apparently presents a root console via its internal 3.3V RS232-like serial port headers, though examination of the Kobo Wifi’s board suggests that it may lack these headers. This should allow full access if you’re willing to crack your Kobo case – possibly literally, because it’s made for easy assembly not easy opening, and is by all accounts a pain to open. I had no real problems opening my Kobo Wifi carefully using a butter knife to pop open all the clips around the edge of the front bezel, but I don’t recommend that you try this unless you don’t mind the risk of breaking it.

    I’ve been informed by someone working on the Kobo that there is no “trusted boot” with signed kernel and bootloader. The Kobo uses u-boot (the Kobo Wifi may use Redboot; not sure yet) and a regular Linux kernel (2.6.28 for the -wifi). Kernel and u-boot sources, along with some userspace helper apps and other things of interest can be found in the Kobo git repository on GitHub. It’s a binary drop of tarballs in git (ugh); there’s no version history and no way to differentiate Kobo mods from the original Netronix-supplied kernel etc, but at least it’s there. Props to gtalusan for posting the updated sources for the new Kobo Wifi model less than a day after I asked him about them. He’s also been wonderful about posting updates, fixes, config files etc as I get further into setting up a Kobo development environment.
    The numerous ways of updating the Kobo firmware and root file system

    The Kobo has an amazing number of different ways to perform firmware updates, plus several ways to apply small incremental patches to the root file system contents.

    Smaller firmware patches are applied by putting a file called KoboRoot.tgz in the .kobo directory of the main onboard FAT32 flash. Upon reboot, this is untarred into the / directory then deleted. Another file named Kobo.tgz (also in .kobo) is untarred into /usr/local/Kobo if found, making for somewhat safer updates when only the Kobo application is being changed. There also seems to be a mechanism to update the Kobo firmware using the .kobo/update file, but I recommend staying away from that.

    Firmware updates to the Kobo may be performed by copying a new firmware archive file to a separate piece of FAT32-formatted flash. The device then uses that file to rewrite its firmware. There’s no direct flashing over USB to worry about. The Kobo Wifi can download new firmwares over wifi instead of having them dropped on it via USB mass storage. Both the Kobo and Kobo Wifi can also be updated via the Kobo Desktop application or by a simple “cp” of the firmware file by putting the device in firmware upload mode then connecting it over USB.

    USB firmware upload mode (which seems to use the minimalist linux recovery partition on the microUSB) is entered by turning the device off and unplugging it from USB, then holding down the Menu key then pressing power. Continue to hold Menu until “Initializing USB partition” appears on the screen. The device will show “Please connect your eReader to USB” on the display. Doing so will mount an empty 200MB FAT32 volume labeled “KoboUpgrade” from a USB mass storage volume from “Netchip Technology” (usb 0525:a4a5). You may safely unmount and unplug the Kobo without copying a firmware file to the partition; it will briefly report that it’s “updating software” then reboot back into the old firmware with all your books etc unchanged.

    Kobo firmware updates can also be performed via the SD card. Some Canadian users received SD cards with firmware updates for the original Kobo. Reports suggest that it prefers <= 2GB SD cards for updates (not SDHC). Instructions here. I have not tested this. Do not try to install firmwares for other eReaders on your Kobo unless you don't mind rendering it permanently non-functional.

    The Kobo can boot off an SD card – just hold down the middle button of the D-PAD ("enter") during power-on, until the first five black boxes of the boot progress bar have filled in. This can be used to test new firmwares without rewriting the onboard flash.

    I've yet to build a new firmware for the Kobo, though I've been using the KoboRoot.tgz patch method on mine in an attempt to get telnet and FTP access over wifi. Figuring out how it's put together isn't too hard, but it's unlikely I'll be able to get the rights to distribute new firmwares, so using the Kobo's firmware patch mechanism is likely to be safer and more useful.

    The Kobo Wifi runs on an arm6 CPU on a Motorola MX35 3-Stack compatible board. It has 128MB of RAM.

    [root@(none) /]# cat /proc/cpuinfo
    Processor : ARMv6-compatible processor rev 3 (v6l)
    BogoMIPS : 530.84
    Features : swp half thumb fastmult vfp edsp java
    CPU implementer : 0x41
    CPU architecture: 6TEJ
    CPU variant : 0x1
    CPU part : 0xb36
    CPU revision : 3

    Hardware : Freescale MX35 3-Stack Board
    Revision : 35120
    Serial : 0000000000000000

    What runs on the Kobo

    The Kobo Wifi runs Linux 2.6.28, glibc 2.11.1, Busybox v1.17.1, and Qt Embedded 2.6.2 among other things. A fuller list can be found in the KoboLabs git repository.

    The busybox configuration is fairly complete, though it lacks a bbconfig command. The full list is easily gained by running "busybox" without arguments on the Kobo, so I won't reproduce it here.

    The sd8xxx wireless driver is loaded as a module. Everything else seems to be built in to the kernel, but module support is present.

    The Kobo Wifi binaries were developed with CodeSourcery Sourcery G++ Lite 2010q1-202 4.4.1. To build plugins for the Kobo Qt application, rebuild Kobo binaries, or build your own, you will need these tools.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s