Tour : click picture below for previous

Back to Mike's Electric Stuff

Click picture below for next

wpe54.jpg (180077 bytes)Miscellaneous Kindle 3 internals and hackings...


wpe26.jpg (79187 bytes)Wi-Fi antenna in corner of case (bottom right when held in normal usage, keyboard-downwards).


wpe24.jpg (147093 bytes) Reset button. Curious as there is no way to actuate it from outside the case - no pinhole. So why do they populate it on the PCB?

As the battery is screwed down it does make it easier to do a hard reset, but still seems odd for it to be populated on production PCBs.

Pressing it appears equivalent to a power-up reset.

wpe20.jpg (585217 bytes)Main board

wpe23.jpg (206672 bytes)Closeup of E-Ink controller. LHS chip probably power management - Eink uses a +/-15V supply.

wpe25.jpg (93113 bytes)Flex from E-ink display contains a large serial flash chip. This suggests that a significant amount of per-display or per-batch adjustment is needed. An Epson E-Ink controller spec I found mentioned "Serial flash memory waveform read support". This memory is read at power-up.

wpe27.jpg (237053 bytes)Of course I just had to read it to see if it contained anything interesting...  unfortunately couldn't see anything, although there is a lot of data there, about 97kbytes.  Here's the flash memory image if you want a look : kindle_eink_flash.bin

wpe28.jpg (408255 bytes)Flex unfolded - looks like 3 driver chips, 1 column and 2 row drivers. Possibly these or similar.

wpe1C.jpg (381924 bytes)Central support frame between PCB and display - metallised plastic, holding keyboard and side switch flex PCBs.

The mysterious side connectors....

There are a couple of little holes in the side, providing access to 5 contacts. My guess is these are used as part of the customization/registration  they do as part of the shipping process, via a jig that the unit drops into for speed.

wpe1F.jpg (148862 bytes) Top contact - does not appear to be ground - runs via  a thick-ish track on the PCB so may be for external power.

wpe22.jpg (34701 bytes) Detail of connector pads.Signals are at 1.8v  logic levels, baudrate is 115K2. The fourth pin is connected to something - my guess would be would be something like a resistor to ID different modes when in a test cradle.

wpe29.jpg (281241 bytes) Contact block - this unscrews easily. Looks like you could make  a plug   with something like a 1mm  thick piece of PCB with 4 tracks on.

Here's what comes out of the  serial port at reset - mostly gobbledygook to me - I'm sure it will mean something to the Penguin people out there...

U-Boot 1.3.0-rc3-lab126 (Aug 29 2010 - 19:01:12)

CPU: Freescale i.MX35 at 532 MHz
Board: MX35 Luigi [ POR]
WDOG_WCR = 0xff31
Board Id: SP1B000000000000
S/N: B008A0A00322482F
DRAM: 256 MB
Using default environment

In: serial
Out: serial
Err: serial
No ethernet found.
i.MX35 CPU board version 2.0
Net: No ethernet found.
Hit any key to stop autoboot: 0
## Booting image at 87f40400 ...
Image Name: Linux-2.6.26-rt-lab126
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2147012 Bytes = 2 MB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux.............................................................
............................................................ done, booting the k
boot: I def:rst:Hard reset or Watchdog Reset Encountered:
2.6.26-rt-lab126 #5 Sun Aug 29 19:01:34 PDT 2010 armv6l
INFO:Using default keypad setting. (not passing "kb_rev" to module)
INFO:Loaded module /lib/modules/mxc_keyb.ko (22508 bytes)
Press [ENTER] for recovery menu... 0 /INFO:Partition table verified for /d
INFO:Checking for updates... (auto-pilot mode)
CHS=4/16/100167 size=3282272256 bytes
flag type first last lba first lba size
Partition p1:
0x00 0x0b 16 <large> 16 6410672
CHS: 0/1/1 - <large>
Partition p2:
Partition p3:
Partition p4:
INFO:Setup loop device /dev/loop0 for /dev/mmcblk0p4 + 8192
INFO:No update*.bin found; no update needed.
INFO:no updates found.
argc == 9
argv[0]: "kinit"
argv[1]: "console=ttymxc0,115200"
argv[2]: "mem=256M"
argv[3]: "panic=10"
argv[4]: "root=/dev/mmcblk0p1"
argv[5]: "ro"
argv[6]: "ip=none"
argv[7]: "quiet"
argv[8]: "lpj=2555904"
Running ipconfig
argc == 4
argv[0]: "IP-Config"
argv[1]: "-i"
argv[2]: "Linux kinit"
argv[3]: "ip=none"
IP-Config: no devices to configure
kinit: do_mounts
kinit: name_to_dev_t(/dev/mmcblk0p1) = dev(179,1)
kinit: root_dev = dev(179,1)
kinit: /dev/root appears to be a ext3 filesystem
kinit: trying to mount /dev/root on /root with type ext3
kinit: Mounted root (ext3 filesystem) readonly.
Checking for init: /sbin/init
Checking for init: /bin/init
Checking for init: /etc/init
Checking for init: /sbin/init.sysvinit
INIT: version 2.86 booting
system: I rcS:def:starting /etc/rcS.d/S02kdb
system: I S02kdb:def:Setting boot device to mmcblk0
kdb set: 'system/driver/filesystem/DEV_ROOT'
system: I rcS:def:starting /etc/rcS.d/S03udev
system: I S03udev:def:setting up virtual fs for hotplug event handling
system: I S03udev:def:starting the hotplug events dispatcher
system: I S03udev:def:synthesizing initial hotplug events
lipc-send-event[379]: E lipc:con::Connection error(Failed to connect to socket /
var/run/dbus/system_bus_socket: No such file or directory)
lipc-send-event[379]: C def:dbusi::Failed to init dbus
lipc-send-event[379]: E def:open::Failed to open LIPC
lipc-send-event[379]: E def:fail:source=com.lab126.hal, event=usbPlugIn:Sending
event failed
lipc-send-event[477]: E lipc:con::Connection error(Failed to connect to socket /
var/run/dbus/system_bus_socket: No such file or directory)
lipc-send-event[477]: C def:dbusi::Failed to init dbus
lipc-send-event[477]: E def:open::Failed to open LIPC
lipc-send-event[477]: E def:fail:source=com.lab126.hal, event=audioHS:Sending ev
ent failed
system: I rcS:def:starting /etc/rcS.d/S04rootfsresize
system: I S04rootfsresize:def:No rootfs on /dev/mmcblk0p1 resizing needed
system: I rcS:def:starting /etc/rcS.d/S10filesystems
system: I rcS:def:starting /etc/rcS.d/S10hostname
system: I rcS:def:starting /etc/rcS.d/S10network
system: I S10filesystems:def:mounting filesystems
system: I S10hostname:def:setting device hostname
system: I S10network:def:initializing network configuration
system: I S10network:def:Installed Firewall
system: I rcS:def:starting /etc/rcS.d/S11chpriority
system: I rcS:def:starting /etc/rcS.d/S11video
Unknown HZ value! (91) Assume 100.
system: W S11chpriority:def:Cannot set priority for IRQ-7
system: I S11video:def:initializing eInk HAL for system use
system: I S11video:def:eink_debug=0
system: I S11video:def:Controller set to broads
system: I rcS:def:starting /etc/rcS.d/S20syslog-ng
system: I S20syslog-ng:def:starting syslog-ng
system: I rcS:def:starting /etc/rcS.d/S21init_time
system: I S21init_time:initboot:time=16820:boot time after init in milliseconds
system: I rcS:def:starting /etc/rcS.d/S45modules
system: I S45modules:def:loading module mwan
system: I S45modules:def:loading module g_file_storage
system: I S45modules:def:loading module fuse
system: I S45modules:def:loading module uinput
system: I S45modules:def:loading module mxc_keyb
system: I S45modules:def:loading module fiveway
system: I S45modules:def:loading module volume
system: I rcS:def:starting /etc/rcS.d/S50system
mount: mount point /proc/bus/usb does not exist
system: I rcS:def:starting /etc/rcS.d/S55scroll
system: I S55scroll:def:skipping; no luigi-based work to do here
system: I rcS:def:starting /etc/rcS.d/S70ethernet
system: I rcS:def:starting /etc/rcS.d/S70userstore
system: I S70ethernet:def:not enet
system: I S70ethernet:def:not usbnet
system: I S70userstore:def:Found BOOTUP flag file
dosfsck 2.11-lab126 (1 Jun 2007)
dosfsck 2.11-lab126, 1 Jun 2007, FAT32, LFN
Checking we can access the last sector of the filesystem
There are differences between boot sector and its backup.
Differences: (offset:original/backup)
Not automatically fixing this.
Boot sector contents:
System ID "mkdosfs"
Media byte 0xf8 (hard disk)
512 bytes per logical sector
8192 bytes per cluster
32 reserved sectors
First FAT starts at byte 16384 (sector 32)
2 FATs, 32 bit entries
1601536 bytes per FAT (= 3128 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 3219456 (sector 6288)
400274 data clusters (3279044608 bytes)
32 sectors/track, 64 heads
0 hidden sectors
6410672 sectors total
Checking for unused clusters.
Checking free cluster summary.
/dev/loop/0: 42 files, 2225/400274 clusters
system: I rcS:def:starting /etc/rcS.d/S90video
system: I S90video:def:initializing eInk HAL for rootfs use
INIT: Entering runlevel: 2
system: I lifeguard:def:starting eInk HAL lifeguard
system: I S40diags:def:not starting Diagnostic Services
system: I S40diags:def:/mnt/base-us/ENABLE_DIAGS does not exist, forcing diagnos
tic disable
system: I S50battcheck:def:running
Sun Jan 10 01:43:11 2010 INFO:battery voltage: 3899 mV
Sun Jan 10 01:43:11 2010 INFO:battery charge: 61%
system: I S50battcheck:def:current voltage = 3896mV
Sun Jan 10 01:43:11 2010 INFO:battery charge: 61%
Sun Jan 10 01:43:11 2010 INFO:battery voltage: 3899 mV
Sun Jan 10 01:43:11 2010 INFO:battery current: -261 mA
system: I S50battcheck:def:gasgauge capacity=61% volts=3899 mV current=-261 mA
system: I S50battcheck:def:Waiting for 3460mV or 4%
system: I S50battcheck:def:battery sufficient, booting to normal runlevel
INIT: Switching to runlevel: 5
INIT: Sending processes the TERM signal
system: I wifi:def:WiFi Device mac = 28:EF:01:EA:3E:74
Platform Setup Script is: /opt/ar6k/host/support/platformscripts/plat_SHASTA_NAT
Image path: /sbin
No debug record limit set
Load Board Data from /opt/ar6k/target/AR6002/hw2.0/bin/lab126_15dBm_nodiv_WWR_CT
Updating MAC address
BMI Set App Start (address: 0x913950)
BMI Bit-Wise (OR) modify Register (address: 0x500410, orig:0x8, new: 0x9, mask:
BMI Write compressed Memory (address: 0x502070, filename: /opt/ar6k/target/AR600
BMI Write Memory (address: 0x52d6d0, filename: /opt/ar6k/target/AR6002/hw2.0/bin
BMI Write Memory (address: 0x500418, value: 0x52d6d0)
BMI Done
system: I wifi:def:loadAR6000 finished, args=()
system: I wpa_supplicant:def:wpa supplicant started
system: I S30network:def:initializing network configuration
system: I S30network:def:Installed Firewall
system: I S60dbus:def:starting system message bus
Starting Process Monitoring Daemon: Retrieved 127 keys for system/daemon/pmond/
Starting Power Management Daemon: system: I S70cmd:def:starting CMD daemon
system: I S70wifid:def:starting wifid
system: I S75phd:def:Starting Phone-Home Daemon
system: I S76mcsd:def:starting MCS server
system: I S80volumd:def:starting Volume daemon
system: I S85audio:def:initializing audio driver defaults
No state is present for card mx35luigi
system: I S85audio:def:starting audio server
system: I S87ttsd:def:starting TTS daemon
Battery Level: 61%
Sun Jan 10 01:43:22 2010 INFO:battery charge: 61%
system: I S90tmd:def:Starting Transfer Manager Daemon
system: I S90cron:def:starting crond
Starting lipc-daemon: system: I S94browserd:def:Starting Browser Daemon
system: I S95framework:def:starting booklet framework
system: I S95framework:def:logging reset type: hard
system: I S96boot_finished:def:Boot finished script running
system: I S96boot_finished:symboot:time=37270:boot time before framework starts,
in milliseconds starting framework
system: I mntroot:def:Making root filesystem read-only

Welcome to Kindle!

kindle login:

system: I S96boot_finished:def:Boot finished script received framework booted ev
system: I S96boot_finished:fwboot:time=79130:boot time after framework starts, i
n milliseconds
system: I loginfo:devhw:boardID=SP1B:Shasta PVT device - rev 1
system: I loginfo:devhwphy::USB PHY built by unknown
system: I loginfo:devsworig::Original System Software Version: 101-shasta0.5-052
Sun Aug 29 19:03:19 PDT 2010
system: I loginfo:devswota::OTA Kindle 3.0.1 (~~otaVersion~~)
com.lab126.wan failed to access property localTimeOffset (0x3 lipcErrNoSuchSourc
system: W loginfo:ltofailwandoff:cannot retrieve local time offset - wand not ru
com.lab126.powerd failed to set value for property wakeUp (0x8 lipcErrNoSuchProp
system: I ckimage:def:skipping kernel check
system: I governor:def:switching to ondemand governor
system: E governor:def:/sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshol
d is set to 11 instead of 30
system: I tinyrot:def::Rotating file /var/log/messages with max size 256
cat: can't open '/var/local/log/nexttosendfile': No such file or directory
/usr/sbin/tinyrot : Signaling syslog
/usr/sbin/tinyrot : Calculating total size /var/local/log/messages_*.gz
/usr/sbin/tinyrot : Total size of /var/local/log/messages_*.gz is 250kb

Login timed out after 60 seconds

Welcome to Kindle!

kindle login:

wpe54.jpg (180077 bytes)


Click picture above for Previous

Back to Mike's Electric Stuff

Click picture above for next