Sure enough, after the warranty on my PW2 expired, it started experiencing more and more frequent Repair Code 0s. Holding down the button & rebooting it usually solved it, until it didn't. Thanks to geekmaster's
excellent diagram I built myself a 1.8v TTL shifter and consoled in. The boot log looked something like this:
Code:
U-Boot 2009.08-lab126 (Dec 30 2013 - 10:54:52)
CPU: Freescale i.MX6 family TO0.0 at 996 MHz
Temperature: 29 C, calibration data 0x5654e35f
mx6sl pll1: 996MHz
mx6sl pll2: 528MHz
mx6sl pll3: 480MHz
mx6sl pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 198000000Hz
emi_slow clock: 22000000Hz
ddr clock : 396000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
MMC: FSL_ESDHC: 0,FSL_ESDHC: 1,FSL_ESDHC: 2
Board: Pinot WFO 2GB
Boot Reason: [ POR ]
Boot Device: NAND
Board Id: 02E22011XXXXXHIO
S/N: B0DXXXXXXXXXXC3T
I2C: ready
DRAM: 256 MB
Using default environment
In: serial
Out: serial
Err: serial
Quick Memory Test 0x80000000, 0xfff0000
POST done in 59 ms
Battery voltage: 4065 mV
Hit any key to stop autoboot: 1 0
## Booting kernel from Legacy Image at 80800000 ...
Image Name: Linux-3.0.35-lab126
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2426044 Bytes = 2.3 MB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
[ 0.095368] No Legacy reboot reason code to print
[ 0.271361] LPDDR2 MfgId: 0x1 [Samsung]
[ 0.275222]
[ 0.275225] just text: vaddr 0xc011e9bc, va 0xc011e200 pa 0x801000c3 attr 0x6
[ 0.283710]
[ 0.283714] nmx6sl_wfi_iram: vaddr 0xd081a000, va 0xd081a200 pa 0x902043 attr 0x2
[ 0.292696]
[ 0.292699] mx6sl_ddr: vaddr 0xd0852000, va 0xd0852200 pa 0x903043 attr 0x2
[ 0.301157]
[ 0.301160] mx6sl_iomux: vaddr 0xf40e0000, va 0xf40e0200 pa 0x20110c3 attr 0x149
[ 0.310045]
[ 0.310047] ANATOP: vaddr 0xf40c8000, va 0xf40c8200 pa 0x20110c3 attr 0x149
[ 0.318506]
[ 0.318509] CCM: vaddr 0xf40c4000, va 0xf40c4200 pa 0x20110c3 attr 0x149
[ 0.326706]
[ 0.326708] MMDC_P0: vaddr 0xf41b0000, va 0xf41b0200 pa 0x21110c3 attr 0x149
[ 0.335253]
[ 0.335256] L2: vaddr 0xf2a02000, va 0xf2a02200 pa 0xa02043 attr 0x149
[ 0.343279]
[ 0.343282] arm perif: vaddr 0xf2a00000, va 0xf2a00200 pa 0xa00043 attr 0x149
[ 0.370543] max77696-adc max77696-adc.0: adc conversion timed out
3.0.35-lab126 #1 Wed Apr 23 01:26:01 PDT 2014 armv7l
Press [ENTER] for recovery menu... 0 //-\|/-\|/-/-\|/-\|/-/-\|/-
The last part is the classic \ | / - character cycle indicating spinning - if left alone, it will sit there indefinitely. Once that point is reached, the Repair Code 0 screen comes up.
To resolve this, I entered diag mode, dropped to shell, formatted mmcblk0p1 with mkfs, loaded the 5.4.3.2 firmware bin onto the FAT partition, and did U to launch an update. (Note: 5.4.3.2 was the previous firmware as well, I never updated it beyond that revision). This worked, and I was able to boot up successfully. I installed the jailbreak, KUAL, and a few extensions (KOReader, USBNet, kterm, gawk, BatteryStatus, and leafpad). Reboots proceeded as normal throughout this time. I thought all was well, so I removed the serial hookup.
Big mistake.
Upon the next reboot, Repair Code 0 once more. I held down the button and had a successful reboot. The next one once more resulted in Repair Code 0, as did all subsequent reboots. Now I'm back where I started.
Back to the serial hookup! The above log is identical to what I'm seeing now. What am I doing wrong?
SEVERAL EDITS: This message keeps popping up in the log, any relevance?
Code:
[ 3249.149939] max77696-adc max77696-adc.0: adc conversion timed out
[ 3249.169930] max77696-adc max77696-adc.0: adc conversion timed out
It also occured to me that this started happening after:
1) It was charged on a fastcharger, pumping over 1A into it (I didn't put an ammeter in line with it but it's a 2A charger and I noticed it charged very rapidly).
2) Once charged, the charger would cut out and the Kindle would drain to zero over the course of about a week (left alone with no usage). Upon recharge, it would boot up fresh. This happened multiple times before the issue started cropping up.
Seeing the above errors makes me wonder if this could be related to the power management IC, however I'm not sure how to proceed further on the diag side. It seems to charge the battery well, and reports its charge level appropriately both in fastboot and (while it was running) in the OS. I have also tried a different battery as I suspected the charging ordeals it went through could've damaged it, with identical outcomes.
It's worth noting that these messages disappear when the Kindle OS is actually running. No idea in diag mode, will test now.
Sure enough, diag mode:
Code:
[ 62.032521] max77696-adc max77696-adc.0: adc conversion timed out
[ 62.038790]
[ 62.038793] ADC value out of thermistor range! setting display temp to 43 deg C
[ 122.172461] max77696-adc max77696-adc.0: adc conversion timed out
[ 122.192473] max77696-adc max77696-adc.0: adc conversion timed out
[ 122.198745]
[ 122.198748] ADC value out of thermistor range! setting display temp to 43 deg C
I'm not sure how critical of an error this is, however.
Hmm.. based on
knc1's comment it's hanging on a user storage reformat. I have no issue leaving it on a charger for a few days, if that'll actually resolve the issue.
Going into the recovery menu in diags (trying to get into it in main doesn't register, goes straight into the "spinning" character sequence), I ran an erase mmc0, partition initialize, and firmware reflash. I also formatted mmcblk0p3. Upon reboot, back to "Your Kindle Needs Repair", but this time without any error codes, nor the DSN - yet back to the "spinning" sequence. I've placed it on a USB ammeter and am leaving it for a few days. Right now battery's at 80%/about 4V and it's not drawing any current from USB. Serial output's of course being logged. Fingers crossed.