Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

dvdkhlng writes "The Ben NanoNote open-source hand-held computer has often been criticized for not being very extensible hardware-wise. A community effort now starts to challenge this by shipping the so-called UBB board, which plugs into the micro-SD port, making 6 I/O lines available to hardware hackers. The most impressive use so far is this VGA port implemented by just a few resistors, with signal-generation mostly controlled by software. The guy who did this calls it an 'unexpected capability.' Schematics and source code are available under the GPL."

The concept is as old as time. There are also lots of similar VGA out implementations for various microcontrollers, FPGAs, etc. What's new here is that the MMC controller is used to send out the pixels, which a) allows for a comparably high resolution, b) makes the operation reasonably efficient (i.e., in the future, it may even be possible to do other things in parallel), and c) hides some of the complexities of instruction timing in modern CPUs, with caches, DRAM, multiple bus masters, etc. Within the qi-hardware community, it was also a nice surprise to discover that our little Ben could actually do this.

BTW, this mailing-list post [qi-hardware.com] contains all the details about how the MMC (SDIO) controller is used here. An earlier version [qi-hardware.com] relied on doing bit-banging with the MMC lines programmed as general-purpose I/Os, but didn't even reach QVGA resolution this way.

just what do you think a MMC controller is really doing? its nothing special, some data lines and a clock, stick it in SPI mode with a 25MHz clock and you have most of what you need for a raster line display

Well the technique was pretty darn common in the 8 bit home computer era. So you are right in that this is not novel, but it shows its still a good method to add video to hardware that the manufacturer maybe never intended to have video out. I think this is a pretty good "News For Nerds" post even if its strictly New(s) that you can do this. I think it might be an interesting technique to apply in things like Rockbox and plug computers, as well.

"Cheap Video Cookbook" is exactly what came to mind when heard about the VGA port (I have a Ben Nanonote and subscribe to the mailing list). I enjoyed Don Lancaster's books so much when I was a kid. He taught me not to be afraid of a soldering iron. He showed me how to disassemble software. But mostly, he explained hacker values better than anyone.

In one of his columns, he told the flute story, and it always stayed with me. I became a teacher in College ten years ago, and I always repeat this story to my students. Here it is.

"Many years ago, I was at a rock concert. The opening act was a single flute player standing solo in front of the closed stage curtains. His job was to warm up the audience for the high priced talent that was to follow. He was good. But as he went along, the musical vibes got stranger and stranger, then totally bizarre. He was playing chords on his flute. Combined with utterly unbelievable riffs. Much of the audience got impatient and bored at what seemed like a bunch of god-awful squawks. Then I happened to notice a friend beside me who had both been in and taught concert band. He was literally on the edge of his seat. He turned to me and slowly said 'You Can't Do That With a Flute.'

Of the thousands and thousands of people in the theater audience, at most only five realized they were witnessing a once-in-a-lifetime performance of the absolute mastery of a difficult and demanding instrument.

While I understand your philosophy, I don't quite see it that way. When only 1% of your audience understands what you're presenting them, you have completely failed to consider your audience when planning your performance, which is actually the most important thing.

I'm in software development, and it's the same thing: My audience doesn't care whether I created perfectly clean code for my implementation, so why should I? There has to be some other benefit to it.

I have a dream where Americans are judged by their abilities, not the number of individuals that make them up. Where a Corporate American can run for President and - thanks to the votes of other Corporate Americans - win.

When President Microsoft and Vice President Haliburton take office my dream will be fulfilled.

That's a pretty nice processor, and you bought it separately so installed it yourself - assuming that's actually your box. At that level, it's almost a given that you know everything about the product by the time you walk in the door. That is, you don't walk in, say "I want that one", and spend $340 (if you did, most don't). You would've been pretty familiar with it beforehand - in the same way that a Lamborghini doesn't advertise its horsepower, since the target audience knows more about the car than you c

In your case presumably the audience can never see how clean (or not) your code is, so perhaps the point is moot. (Might be different if you're writing open source -- in which case most of the users will still never look at the code, but a few will.)

In the flute-player's case, it was all exposed for the audience. Sure, only a few appreciated it. But if you are truly skilled at something, don't you want

I write hard SF. I go to great effort to get details right, although I know most of my readers will neither notice nor care. As long as I entertain them, that's fine -- and it's important that the details don't get in the way of that entertainment. However there are a few who will notice, who may even do the math. They're the ones I take that extra effort for.

Being a big fan of hard SF and very technically-minded myself, I appreciate your attention to detail, but be aware that you're doing that mostly for your own peace of mind. For example, there are so many faults in the Harry Potter series that somebody even wrote a whole book about that (called Harry Potter and the Methods of Rationality [fanfiction.net]), and see what disaster it meant to J. K. Rowling's sales.

A fair point, and yes, I do it because I want to -- and readers like you who do appreciate the effort. I know there are other writers, some quite prolific, who take the attitude "it's fiction, for crying out loud, just make stuff up!". Yeah, no.

If I ever get that desperate it'll be under a pen-name.;-)

(Not that I'm above tweaking a detail for the sake of the story, but I'll try to keep that to the realm of "not proven" rather than "known false".)

Completely off-topic - but I love hard SF. I see you've got quite an extensive bibliography [alastairmayer.com] - for someone who is unfamiliar with your work, where would be a good place to start. Kindle eBooks preferred for the instant gratification factor, dead trees will be considered though.

Thanks for asking. I don't want to spam Slashdot, so I'll send you an email. Or search Amazon for my author page (Alastair Mayer). All short stuff and collections so far, a couple of novels are in the works.

I would say the exact opposite. Nobody cares how clean your code is--but you do.

I've seen a lot of brilliant products die because as it grew it hit the limit of what people could do with it. The products I've seen last decades aren't the same code as when they started but they did share an ease of accessibility in implementing new things.

So don't create for the 5 people in the audience. Create for yourself. Do it because it makes your life easier or excites you. Then you'll probably find an entire au

Good point, and I'm sure that flautist was performing for himself as well as the five. (And I agree with you on the software front too -- having done a couple of decades in software development myself.)

Most people who just run Word and Firefox look for quality and price and maybe features like BluRay if they watch movies on a laptop. Gamers. multimedia creators, and the wealthy still look at those specs. Millions of us including most slashdotters do because we use more CPU than an average user.

If a 3.0 ghz is at the same price as a 2.8ghz then the average consumer will take notice and get the 3.0 ghz system.

Did you read the story in the paper about Joshua Bell, one of the world's top violinists who dressed up as a bum and played the violin for day in the subway system? There was a similar moral to the story: some people took notice and went on their way, most didn't and a very few (I think the # was also 5) stopped and stayed to listen. Only one of those who stayed recognized who the musician really was.

If the hardware can pump out the data fast enough for a tolerable refresh rate, it might be worthwhile to make a fancier version of this VGA interface that could deliver better color depth. Take multiple clock cycles to load portions of data for each RGB pixel into something like two-stage latches, with the outputs of those driving the resistors that act as a D/A converter. 6 bits per RGB component would probably be tolerable. If one settled for 5, each 16 bits transferred would include one extra for cons

Because it opens the possibilities of other "unexpected" hacks that people can't visualize simply by looking at the available ports for a given device (not just the one in the article). If you can plug that thing into the microSD port and make it talk to VGA with 10 resistors and a bit of software, it means you can probably use microSD as a connector on other devices knowing that the connector and board are not only dirt cheap but open.

It's often ___immeasureably__ useful to get some (any) kind of console output when porting Linux to an existing device running e.g. windows mobile 5 or 6. Take a look at HaRET [handhelds.org]. Porting is often harder than most would imagine, as some manufacturers actively use hardware obfuscation methods to prevent hacktivists from getting console access.

Try to imagine how long it would take to use LEDs or haptic feedback to iteratively check all conditions required to bring up Linux on a board without a serial port. The first thing you would probably do is try to use a hardware subsystem that was known to work and fashion a serial port out of it. This is the same concept but graphical.

For one it's fun. It's OK to have fun. If we only do those things that need to have a (serious) reason, we'd never have any fun. You must have gone straight from diapers to curmudgeon, without the usual goofy and fun states.

For another, this would be great for a low-cost embedded project. I can easily see this being adapted to an embedded playroom I play with.

Maybe they just did it so that someone like you could ask 'why.' Because I can't think of anything more satisfying than a good hack that confuses your type of person. Yeah, it ain't something you are going to use every day. As long as it befuddles the non-geeks (that's what someone who asks the question the way you phrased it is) it's cool.

Viva for 'wasting time, resources and bandwidth' even if it's someone like you, with your sort of comment, doing the wasting. I guess.

It reminds people that tech isn't magic, and that even modern high tech devices contain things that can be messed with on a budget.

From a practical standpoint, this can be useful. Maybe somebody finds that this or a similar device is just the sort of thing they need, except that it lacks the right kind of port. This kind of hack can solve the problem.

I don't remember the details, but this device came out a few years ago. Only difference between MircoSD and SD are a few ground pins, right? The margi probably used a ucontroller for the signal generation, now that devices are more powerful, the software implementation is now plausible.

A community effort now starts to challenge this by shipping the so-called UBB board, which plugs into the micro-SD port, making 6 I/O lines available to hardware hackers. The most impressive use so far is this VGA port implemented by just a few resistors, with signal-generation mostly controlled by software. The guy who did this calls it an 'unexpected capability.' Schematics and source code are available under the GPL."

This was more significant in the pre-USB 2.0 era. It's now possible to get USB interfaces to almost anything. It used to be that your choices were a serial port, a parallel port, a data acquisition board, or custom hardware. Now there's usually some inexpensive USB device that will do the job.

It's hard to find low-cost devices which provide 50MHz digital in/out ports. There are lots of USB to digital I/O interface devices, but only a few can reach even 40MHz. If you don't need that much speed, though, a

This hack was tweaked until the MMC/SD controller in the SoC was happy with it. Other controllers may differ. In any case will you need the ability to switch CMD and CLK to GPIOs (without disabling the entire MMC controller) and to bit-bang them at a reasonable speed (at least a few MHz).

So it's quite platform-dependent in its current shape, but you can probably apply the same principles with other SoCs as well.