Archives: 2011-02

FTDI VNC2 Binary Only Firmware

The rhythm game adapter work has basically been stalled for the last two weeks waiting on the microprocessor vendor, FTDI, to try and come up with any type of resolution for the problems I’ve found in their firmware. While they have been gracious to respond at all, until now the responses have been less than useful. If I had an alternate platform with the same properties that had open firmware, or at least a source license, I would switch to it in a heartbeat at this point.

First things first, I am using the VNC2 from FTDI for this project largely because it is the only part I have found that has both a USB slave and an independent USB host controller on the same chip. Plenty of microcontrollers have a USB OTG controller, but that only lets you use one modality at a time. For the USB HID proxying to work, you need to have both simultaneously. One alternative would be to use a micro with a built in USB controller, then an external serial interface controller to handle the other end. Or you could just use two USB enabled microcontrollers, like an AVR, back to back. My goal on this project was to keep the part cost below $10, so that it could be produced in large quantities. Unfortunately AVRs with enough memory to hold a reasonable USB host stack are much more expensive even in quantity than the VNC2, much less the fact that you would need two of them. As far as external USB controllers, you can’t seem to find any low/full speed external controllers that are any cheaper than an entire microcontroller

In the hope that someone has had similar problems and knows how to work around them, I am going to start cataloging all the problems I’ve had with the FTDI toolchain and firmware here on my website. If nothing else, that will give me a clear record of what they may have fixed in subsequent versions.

One thing I am considering, although hesitantly, is reverse engineering enough of the register level interface to the peripherals on the chip to fix the problems myself. As part of debugging some of these other issues, I’ve been hand assembling bits of code to patch interrupt vectors and their code. However, looking through binutils, it isn’t hard to guess that bringing up a brand new architecture with 0 documentation is likely to take several man months of effort, which is a rather large yak to shave for such a small project.

Chrome vs. Firefox -- Round 1

The address bar in Firefox is named the “Awesome Bar”, and for a good reason. Aside from some occasional stuttering, it does an amazing job putting what I want most just at the top. Unfortunately, Firefox has so many other problems that I’ve abandoned it in favor of Google Chrome.

The one thing that I miss the most is the Awesome Bar. There are probably 10 pages that I revisit every day over and over again. In Firefox, I just typed in a word from their title, and up would come the link. In Chrome, I’m lucky if the link even appears in the list of available options. Usually I have to move down to the final “see all pages in history”, for which my desired page is almost always the top link.

Did Mozilla patent their frecency algorithm or am I just missing Chrome’s special brand of awesome-ness?

Rhythm Mixup - First Light

As an avid rhythm game fanatic, (primarily DDR), I was very excited with the release of Rock Band 3 and its “real” instrument modes. I have been having a lot of fun, and painful practice, learning pro keys. The game is in general reasonably good, although the Wii port has its own set of problems.

However, I was frustrated at the limited portability of the peripherals between console platforms. Particularly, the Wii RB3 guitar and keyboard, despite being practically identical, would refuse to operate as anything other than a generic HID device when plugged into a PS3. I haven’t even tested with an XBox 360, but I presume the problems are similar, if not worse.

For a number of weeks I have been working on a project to create an inexpensive dongle/adapter to allow peripherals from one console to be playable on another console. Today was exciting, as I rocked out for probably the first time anywhere using my Wii guitar and keyboard on my friend’s PS3. So, first light has been achieved.

It still isn’t a great solution yet, the play is laggy and only a very limited set of peripherals are supported. Unfortunately, some of the issues are out of my hands, as the only reasonable hardware for my desired simple design consists of a binary blob only firmware which has turned out to have a large share of teething problems. With any luck, the vendor will be able to resolve these and I can get the performance up to where you would actually want to play with it.

More to come as the design progresses and bugs get worked out.

Christmas in Ghana

Over the holidays we visited Ghana, then London, here are some pictures from Ghana.