Sunday, July 21, 2013

txtr Beagle - card parser

I started playing around with the SD card contents to see how I can parse it and verify the functionality.

The result is a small Java program that is able to read the contents page by page and display it on a little panel. You can type the page number and press <Enter>, you can use arrow keys or mouse wheel to scroll.

Part 1:

Part 2:

Part 3:

Part 5:

A couple of observations:
- building a 3bpp image in Java is a pain or I'm missing something. Perhaps the TYPE_BYTE_INDEXED would be a better choice
- although the images seem to render correctly they display differently than on the device. I think the reason for this is that the eInk gamma curve is different compared to the computer monitor, but perhaps I'm also parsing the buffer incorrectly
- there are a few Easter eggs hidden in the images: an author page, a lolzcat(?) image, a reset screen, font size screen
- at the end of the useful card contents the pages get scrambled. I believe the device might be switching to a different access mode

Next stop would be to build a Java app that parses PDF files (or something else) and is able to pipe the output to the device. Not my priority though, I'd rather study the uC first and see what it does.

Technically, the images below are screenshots taken from my application which should not pose a copyright problem just as posting a picture of the device should not constitute a copyright violation.


Useful information:
Page 0 - some not-yet-decrypted data and indexes (indices?)
Page 1 - utility page - no books, please transfer to begin reading...
Page 2 - utility page - no books, please connect your smartphone...
Page 3 - utility page - waiting after books
Page 4 - utility page - connected to smartphone
Page 5 - not decoded; random stuff, maybe some fonts
Page 6 - utility page - cover screen [saver]
Page 7 - utility page - please wait
Page 8 - utility page - showing shadowed book, diagonal stripes on cover
Page 9 - utility page - timeout, connection was terminated
Page 10 - utility page - reset screen [yes/no]
Page 11 - utility page - connection lost
Page 12 - utility page - battery almost empty
Page 13 - utility page - battery empty
Page 14 - utility page - authors page
Page 15 - utility page - font size 24pt example
Page 16 - utility page - font size 28pt example
Page 17 - utility page - font size 32pt example
Pages 18-20 - utility page - catz
Pages 21-58 - blank
Page 59 - cover page for first book (beagle guide)

Page 60 - first page for first book (beagle guide)
Page 78 - last page for first book (beagle guide)

Page 118 - first page for second book

The Java code does not perform any checks, might not close files on failure, might crash your data, etc.

No comments:

Post a Comment