Nook Teardown

Now here’s something I didn’t expect to be writing about, but an informative topic nonetheless. Basically an unfortunate accident last night involving alcoholic shenanigans left me waking up to a broken Nook.  I’ve been told it was my fault though have no memory of it, funny what alcohol does to brain cells. First thing I thought to do was of course check ebay to see if the thing has any salvageable value left, I’m no stranger to the market for broken electronics. Turns out nobody wants to buy a Nook anymore, let alone a broken first generation Nook. After that I was very close to just taking it to the local electronics recycle bin but saw an opportunity to take it apart, learn something, and maybe even salvage a few parts.

As mentioned before, this is a first generation Nook from way back when. I first purchased it when I was still in high school and it’s lived well past its best if used by date. The purchase was more one of curiosity and wonder than it was for the primary function of reading ebooks. Admittedly, I wasn’t as heavy a reader in my high school days prior to owning this device. E-Ink technology just fascinated me. Think about this feature set for a second: paperlike clarity, low cost, low power, image latency. It’s those features that enabled us to finally improve on the age old technology of printed books. For some, the ereader has replaced print books completely. Personally, I just had to have one to play with and the good news was that it was only $100 at the time which is extremely cheap for cutting edge technology. And now after 4 years and countless books I can finally retire the device for good.

Now about the teardown; it’s pretty easy as long as you have the small Torx screwdriver necessary to pop the case open. This wasn’t my neatest teardown ever because I had no intent of  putting it back together and making it work again so I ended up completely destroying the faceplate among other things. Inside, there’s a rather large PCB with a few points of interest. First thing you notice is that board was designed to be used for both Wifi and 3G versions of the Nook. This is apparent by the unpopulated connector in the upper right; I’m assuming that’s for a 3G card. There are also pads in that area most likely for an antenna. The SIM slot is oddly enough still on the board. Another curiosity is that there are actually two MicroSD slots, with one being inaccessible to the user and populated with a 2GB MicroSD. On the underside there are loads of test points available for each major IC, more test points than I’ve seen in any other device I’ve taken apart but I’ve learned that having test points is absolutely essential in dealing with hardware. Aside from that, there are some large ground planes available. It would be interesting to learn about the engineering decisions involved in mass production some day, but short of industry experience    I fear a lack of resources available.

PCBThere are a number of shielded components on the board which I personally think contain the most interesting parts on the board. I’ve learned these are usually any high frequency components and the shielding is there to protect from electromagnetic interference. From top left to bottom right I’ve reasoned the blocks as follows: WiFi controller, E-Ink display controller, CPU/Memory, Power electronics. Each block is interesting in its own respect, but I’ll try to give them each an appropriate amount of attention. Lowest profile component of these is the WiFi controller, very nondescript. The blue component to the left of it caught my attention though as I haven’t seen anything like it before. It’s apparently an antenna/bandpass filter. The E-Ink controller consists of two main chips, one seems to be a proprietary ASIC for E-Ink and the other appears to be a memory chip probably to buffer the display. One thing I noticed from using the Nook was that forward page turns were near instantaneous, but flipping back had a noticeable latency. My guess is the next page is always buffered onto the memory right after a turn so it’s available instantly whereas any other pages need to be fetched from the SD Card, processed by the CPU, and finally drawn onto the display. Would love to see the code these things are running. For processing power, the Nook appears to be sporting an ARM core produced by Samsung. It also seems to be controlling the LCD directly. To the right there are two more memory chips, I’m guessing one of those is used for the LCD buffer and the other is for Android. In the bottom left edge of the PCB there’s a programming header where I can picture these boards being inserted by the corner into a machine to be programmed. You can still make out the markings left by the pins of the programmer. Finally there are the power electronics. At first I didn’t realize what they were because the design seemed incredibly sophisticated, but power regulation has come an incredibly long way. I even looked up datasheet out of curiosity, and it’s an impressive piece of kit. Turns out that the chip is not only responsible for charging the battery, but it also handles audio (Though I’m not sure why they even bothered to have audio on this device). There’s a single small speaker on the bottom of the device. Funny to note, there are holes in the case drilled for two speakers. Consumer aesthetics prefer symmetry, go figure.

E-Ink Display

We now come to the infamous E-Ink display, or rather what’s left of it. I quite literally cracked it open to see what made it work. From what I’ve read about E-Ink in the past the technology has a very simple idea about it. You’ve got particles of two colors black and white, assign a certain charge to each particle, combine them in a little pixel container, and apply an electric field to the pixel according to what you want. After breaking it apart, I saw how they accomplished this using layers. At the bottom there’s a glass layer which I’m sure is some kind of semiconductor that applies the electric field to update the display. What amazes me about this display, is this field only needs to exist long enough to apply the image. Afterwards no power is required to maintain it. On top of the glass there’s a layer of this sticky film like substance that has a certain shininess to it but you can see individual pixels on it so it must go hand in hand with the glass layer. Finally on top, there’s a plastic layer containing the actual E-Ink particles of the display. It’s a very grainy material, and I’m still marvelling at how fine a resolution it can accomplish.

LCD

As for salvageable components from this teardown… All I can really take is the battery, MicroSD, speaker, and the color LCD. I may keep the PCB just because I think it has a certain nerdy aesthetic to it. It can make a nice wall ornament someday. What I would love to make use of though is the LCD. It’s a great size and resolution if I can figure out how to use it. I did a quick look for the datasheet and it’s not going to be easily available, but it appears to be a standard protocol. More research is a must and it’s definitely going on my project stack. Overall, I had fun writing up this teardown and it was a worthwhile experience poking around a beautifully engineered device.

Reverse Engineering an LED Matrix Part 2

IMG_20130531_202453
Today’s Progress

I got a new toy in the mail today, a brand new Bus Pirate V4 (The red PCB to the left). What this wonderful piece of kit allows me to do is communicate with various IC’s using any of the standard serial interfaces (UART, SPI, I2C, etc) via USB with an easy to use serial interface. Ever since I started getting into electronics and the world of IC’s I’ve yearned for such a tool. I’ve even gone as far as to write up a set of generic MCU programs for each interface for quickly testing chips, but these could only go so far. Needless to say I bought one of these up and all I have to say after one day of ownership is that I wish I bought it sooner.

Setup was a breeze once I found the necessary .inf file for the driver. Once I was up and running I updated it to the latest and greatest Bus Pirate firmware. Something to note about this is that it’s important to short the PGC and PGD pins prior to plugging it in for an update or else it won’t set the device up for an update. Another thing is I need to buy some 90 degree 100mil headers for the programming header. Next up, I ran the self test where I discovered the need to note differences between V3 and V4 boards. Pretty much all the documentation written online is for the V3 board which has differences in drivers, pinouts, and the like. Hopefully, this will change as V4 becomes more stable and popular which I don’t think is too far down the line considering how useful this device is.

Bus Pirate in hand, I decided to go back to my reverse engineering project to see how this device can help move along the development process. From part 1 of this project I discovered that these chips were shift registers that used SPI to receive data. What I wasn’t entirely sure about was exactly how it all worked together which is what I set out to do today. First off, I hardwired the enable line to ground so the output can always be seen. Then I wired up a button for latch so I can manually strobe the data, I’m sure the Bus Pirate has a tool for this but it’s unnecessary right now. For clock and MOSI, I set the Bus Pirate mode to SPI and it immediately allowed me to set all the important parameters such as clock phase, polarity, frequency, and the like. This is incredibly useful compared to reprogramming a MCU each time you get it wrong. As it so happens, I misinterpreted the timing diagram and got the clock phase wrong but this was fixed with a few commands. Another thing to note is that the Bus Pirate always turns off the voltage regulators when changing modes as a safety feature.

I then started playing around with the small chip and learned that a logic high sent to this chip corresponds to a logic low on the pin, meaning it’s designed to control the cathode of the LED which is how it was wired. Daisy chaining a second current driver was as easy as connecting the serial out to the next serial in and sending two bytes of data. The first byte sent of course is what appears on the last device in sequence. Playing around with the big chip I realized the opposite was true, a logic high corresponded to a logic high on the pin. This led me to answer to the question in my previous post regarding the difference between the two chips. The big chip’s intent is to drive the common anodes and therefore source lots of current. These chips can also daisy chain with the small chips no problem which makes me wonder why the designers chose to have a 12 SPI bus interface. I do have to explore what the difference (if any) is between serial out 1 and 2.

The big chip also had the additional functionality of using a separate voltage source to power the LED’s, but the board’s designer’s chose not to use this. More about power, after reading further into the datasheet I noticed that the small chips had a recommended voltage of 3.3V whereas the big chips were intended for 5.0V. Probing of the board led me to the conclusion that they powered everything from one voltage source. Since the absolute maximum rating for the small chip was up to 7V I assumed they just went with the 5V power so that’s what I tried when daisy chaining the two chips together which worked fine.

At some point I tried wiring up the display which ended in disaster. My intent was to get a single row of matrices working. I first did a little rework by chaining the column chips to the single row chip so I could control the thing with one bus. Then I copied the wiring over to the control header and powered it using an adjustable DC wall wart (6V) I have that I stepped down to 5V using an LM7805 linear regulator. It didn’t work as expected, the entire row of matrices would go red every once in awhile and die. Strobing it would do something, but the results are unpredictable. In hindsight I did a number of things wrong, first off the linear regulator overheated quickly I needed to get a TO-220 heatsink for it. Next, I realized I didn’t even need the regulator to begin with. The chips and the display operate fine on 4.5V which my adjustable wall wart provides. Finally, and most importantly, I was no longer powering the chips with the bus pirate. This meant that I wasn’t sharing a common ground between the SPI master and slave, only after I disassembled it all did I realize that.

To top off the day, I made the scale single matrix prototype on the breadboard above to see where I went wrong (it was the ground ughh). It works perfectly with the big/small chip daisy chained while powered by 4.5V. Moving forward, I’d like to do a rework on the display by daisy chaining all the chips. I did a back of the envelope calculation and found that the bus needs to operate minimally at 19.2khz to render the entire display without aliasing at full resolution and color depth which is well within the realm of possibility. I may forgo using one of the colors though to minimize code complexity and increase reliability. Another calculation I need to do is a worst case power usage estimate and to source a high current 5V supply. Hopefully I can use one of these old USB cell phone chargers I have laying around because I want this to be a standalone device.