Torx drivers came in and I was able to remove the back plate of my Steam Controller. I took some pictures because the iFixit pictures had the outline around the MCUs.

I pulled out my little multimeter and switched to continuity checker. I also used Krita to trace the lines in individual layers to keep track of what I found. I only got through the connection between the MCUs. I found 5 pins connected from the nrf51822 and the LPC11U37F. SWDIO/nReset and SWCLK are interesting. I understand keeping nRESET attached to allow the 11U37 to reset the 51822, but the SWCLK is a little surprising. It makes me think that the 11U37 may be able to program the 51822 directly. It wouldn’t be for programming at manufacture because both the debug headers are available. This could also potentially be used to allow the 11U37 expose a USB endpoint that acts like a debugger so a developer could load/debug code without a torn-down unit. I can definitely see that as a cool use.

I also found two pins that go from the RX/TX UART lines on the 11U37 to the 51822. That leads me to assume they are communicating over UART. This isn’t too surprising. I was assuming either SPI or UART before I opened up the controller. The 51822 does support DMA for the SPI slave so it can receive data without waking the CPU. SPI would have required at least one extra pin for CLK and probably another for chip select. It would probably need another to also allow for the 51822 to request servicing by the 11U37. An extra 2-3 pins may have been too much given that pretty much all the pins on the 11U37 are already in use. It also may have been very difficult for routing. From what I can tell, it’s a two layer board and pretty dense around the 11U37. I think for an application like this, I would have looked at SPI pretty closely. It shifts the design from a peer-to-peer protocol to a master-slave approach. That can be really nice for code architecture because it becomes just another peripheral. Of course, this is me saying this without any understanding of how the code is structured.

And that leaves one more pin. I’ve got no idea and probably won’t be able to figure it out until I capture some signal traces with a logic analyzer. Some completely random guesses, heart beat to the 11U37, interrupt if the UART is a command-reply protocol, or maybe some other state pin like currently connected.

Well, first hiccup of the project. The back plate is held on with Torx screws. So Amazon has a set on the way right now. However, I did print out a large copy of the board from the iFixit teardown. I’ll probably take my pictures to avoid the highlights that are over the pins. Next up is finding a schematic application to track what I can find.

I picked up a Steam Controller some time back and have used it quite a bit. It wasn’t until recently that I looked at a tear down and thought it would be fun to hack it a bit. So I’ll be trying to follow along on here with what I find out. I have at least my first few steps figured out.

  • Figure out a rough schematic
    • Starting from the iFixit Teardown, I need to figure out how the MCU, sensor ICs and buttons are connected
    • I’ll only need a pretty standard DMM for this part
    • I’ll also probably skip most of the power supply circuitry. At first glance, I can’t see what FW would need to be involved with the power supply
  • Get some tools
    • I’ll need a proper debug connector. The footprint from the teardown looks like a Tag-Connect TC2030-CTX. It looks like a nice small footprint as far as debug connectors go. And SWD is pretty common for Cortex-M parts.
    • Wireshark and the steam controller plugin for parsing packets.

And now for a huge change in our lives. We are leaving the West Coast for the East Coast. Neha and I have been in California for more than 10 years since we both started Caltech in 2003. We’ve been in San Francisco for the last 6 years. We’ve built up a lot of history while living here. We got engaged, married and had our first child. I got my first job here and Neha got her doctorate here. We’ve grown into this city and I think there will be lot we miss from here. Simple things like being able to find all kinds vegetables and being 30 minutes from SFO.

Now all of our stuff is on a truck and apparently in the middle of Wyoming right now. We packed up everything, taking some extra time as we came across memories. It was lot more boxes than I originally thought it would be. I think we averaged about 4 hours of sleep a night for about 5 days leading up to the pick-up day. Even after everything was loaded we still weren’t “moved out”. We definitely missed a few things and are going to make the flight with us to Boston.

Traveling to Boston is going to be a rather interesting flight. Enara is a lot more mobile now and isn’t thrilled with sitting still for hours on end. She does a little better on red-eyes if we can get her to sleep well. Korben is also in a special mood because of all moving prep. He gets a bit extra neurotic when he feels like he might get abandoned. So a baby, dog, diaper bag and backpack with us. As well as the carseat and stroller. And 3 check-in suitcases and a pack-and-play. A bit of a logistical mess. But then we will be in Massachusetts.

Once we get to Boston it is still a bit of a drive out to Pittsfield, our new home. It’s a lot smaller than San Francisco and it will be quite the adjustment. We are looking forward to it though. We will have an actual yard for the munchkin and pup. We can take nice long walks together during the summer and build snowmen during the winter. Maybe even sneak up to Vermont for the color change in the fall. We are hoping that we can settle in and take a little more time to be a family.

Next post will be a bit more about the town and how our move-in went.

New Site

First, the site has a new look. I switched to WordPress as a 1-click install from Dreamhost. I tried it for Neha’s site, littlemissdentist.com, and I rather enjoyed the interface. Since my upgrade to the latest Joomla had broken my previous setup I thought now was a good time to transition. Once again I am going to try to make this actually something I keep up. I am hoping to also include projects that I want to work on. So what am I working on?

Fitbit

A few months ago I left Looxcie for a position at Fitbit. And I am loving the heck out of it. Why am I loving it? Well, to start the office is in downtown SF. My apartment is half a block from the Muni N-line stop. So my commute is now walk half a block hop on the train and hop off at the Embarcadero stop. From there I walk a block and a half and I am at work. It is definitely an improvement compared to a 50 mile drive each way down to Sunnyvale and back. I try to bring something to read and listen to music on the ride. I do miss the convenient time to call home, but I am going to have to make a better schedule to make that happen.

How about the work environment? When I went to interview one of the first thing I noticed was the distinct lack of cubes. All the desks were out in the open. This definitely made me a bit nervous. I liked having a little place that was my area. Now I think that I really like the layout. Yes, it does seem to reduce privacy a touch, but it also seems to open up communication between everyone. I see this really show up in a couple of ways. One is the interaction as engineers, if I have a question about something in the code I just look up and ask one of my coworkers. The R&D group sits behind me and the EEs sit in the row in front of me. For firmware, this is great. Questions about the hardware are answered quickly and R&D can explain their algorithms. The second part of the open office is communication as friends. I talk with some of the other firmware guys about video games on a regular basis. Or the other day someone posted a link to the recent world record skydive. We all talked about it while getting other stuff done. I think the interaction outside of engineering problems really help the group cohesion.

And the actual work. Well, let’s say I thought I had an understanding of low-power and minimal hardware. Fitbit is a whole other world. Working to keep a task from running too often to eek out that extra half-day of power or making sure that every little IO pin is accounted for and turned off when not needed, is a new and exciting challenge. And I definitely felt thrown into the deep end when I signed on. Sure, I had a week to get my feet wet in some of the manufacturing test firmware. But right after that I was digging into UI and Bluetooth side of things. And then I had to start putting out the official firmware releases for internal testing and even for some of the actual final devices. That is an incredible and terrifying feeling. Here is the result of all that work:

That’s a Fitbit Zip on a shelf at the local Target. That is awesome! Seeing my work out there in the real world that anyone could pick up at the local store. Consumer electronics is my world and where I hope to be for a long time to come.