Eavesdropping on a VGA Monitor’s Conversations

Did you ever wonder what your monitor and your computer are talking about behind your back? As it turns out, there’s quite a conversation going on while the monitor and the computer decide how to get along, and sniffing out VGA communications can reveal some pretty fascinating stuff about the I²C protocol.

To reverse engineer the configuration information exchanged between a VGA monitor and a video card, [Ken Shirriff] began by lopping a VGA cable in two. The inside of such cables is surprisingly complex, with separate shielding wires for each color and sync channel and a host of control wires, all bundled in multiple layers of shielding foil and braid to reduce EMI. [Ken] identified the clock and data lines used for the I²C interface and broke those out into a PocketBeagle for analysis using the tiny Linux machine’s I²C tools.

With a Python script to help decode the monitor’s Extended Display Identification Data (EDID) data, [Ken] was able to see everything the monitor knows about itself — manufacturer, serial number, all the supported resolution modes, and even deprecated timing and signal information left over from the days when CRTs ruled the desktop. Particularly interesting are the surprisingly limited capabilities of a VGA display in terms of color reproduction, as well as [Ken]’s detailed discussion on the I²C bus in general and how it works.

We always enjoy these looks under the hood that [Ken] is so good at, and we look forward to his reverse engineering write-ups. His recent efforts include a look at core memory from a 50-year old mainframe and reverse engineering at the silicon level.

Introduce Yourself To a PocketBeagle With BaconBits

The PocketBeagle single-board computer is now a few months old, and growing fast like its biological namesake. An affordable and available offering in the field of embedded Linux computing, many of us picked one up as an impulse buy. For some, the sheer breadth of possibilities can be paralyzing. (“What do I do first?”) Perhaps a development board can serve as a starting point for training this young puppy? Enter the BaconBits cape.

When paired with a PocketBeagle, everything necessary to start learning embedded computing is on hand. It covers the simple basics of buttons for digital input, potentiometer for analog input, LEDs for visible output. Then grow beyond the basics with an accelerometer for I²C communication and 7-segment displays accessible via SPI. Those digging into system internals will appreciate the USB-to-serial bridge that connects to PocketBeagle’s serial console. This low-level communication will be required if any experimentation manages to (accidentally or deliberately) stop PocketBeagle’s standard USB network communication channels.

BaconBits were introduced in conjunction with the E-ALE (embedded apprentice Linux engineer) training program for use in hands-on modules. The inaugural E-ALE session at SCaLE 16X this past weekend had to deal with some last-minute hiccups, but the course material is informative and we’re confident it’ll be refined into a smooth operation in the near future. While paying for the class will receive built hardware and in-person tutorials to use it, all information – from instructor slides to the BaconBits design – is available on Github. Some of us will choose to learn by reading the slides, others will want their own BaconBits for independent experimentation. And of course E-ALE is not the only way to learn more about PocketBeagle. Whichever way people choose to go, the embedded Linux ecosystem will grow, and we like the sound of that!

Real-Time Audio For The PocketBeagle

The BeagleBone has long been a favorite for real-time I/O, and now with the release of the PocketBone — the tiny key fob-sized BeagleBone — there are ever increasing uses for this tiny little programmable real-time Linux module. The Bela Mini, just released, is the latest add-on cape to take advantage of the processing power of the micro-sized PocketBone.

The Bela Mini is a shrinkification of the original Bela, a cape add-on for the BeagleBone. The original breaks out eight analog inputs and eight analog outputs, both sixteen-bits deep. With the addition of powered speaker outputs, the Bela turns the BeagleBone into the perfect tiny audio-Linux-thing, with a special emphasis on Pure Data and other audio wizardry.

The Bela Mini does away with the powered speaker outputs, and instead replaces those ports with stereo audio in and stereo audio out on a three-pin connector. Compared to the original Bela, the Mini loses the eight sixteen-bit analog outputs, but still keeps the analog inputs.

There have been many attempts to add real-time audio to microcontrollers and Linux boards, but few examples have lived up to the hype. Most of the time, this comes down to the choice of microcontroller or module; an ATmega-based Arduino doesn’t have real analog outputs and instead relies on PWMing a digital signal. A Raspberry Pi-based Pure Data box does not have a real-time I/O. This is where the choice of the PocketBone shows its strength. The PocketBone uses the same chip as the BeagleBone, and with that comes the Programmable Real-Time Units (PRUs). This enables the Bela to interface with signals with a dedicated controller in real-time. It’s exactly what you want for audio applications.

Hands on with PocketBeagle

[Ken Shirriff] is no stranger to the pages of Hackaday. His blog posts are always interesting, and the recent one talking about the PocketBeagle is no exception. If you are old enough to remember the days when a Unix workstation set you back tens of thousands of dollars, you won’t be able to help yourself marveling at a Linux computer with 45 I/O pins, 8 analog inputs, 512M of RAM, and a 1 GHz clock, that fits in your pocket and costs $25. What’s more the board’s CPU has two 200 MHz auxiliary CPUs onboard to handle I/O without having to worry about Linux overhead.

These last parts are significant, and although the Beagles have had this feature for years ([Ken] talked about it earlier), the access and communication methods for using these slave processors has become easier. [Ken] shows a small snippet of C code that outputs a 40 MHz square wave no matter what the Linux OS is doing. In this way you can use Linux for the parts of your application that are not that critical, and use the slave processors to handle real time processing.

Continue reading “Hands on with PocketBeagle”

Friday Hack Chat: The Incredible BeagleBoard

Over the last year or so, the BeagleBoard community has seen some incredible pieces of hardware. The BeagleBone on a Chip — the Octavo OSD335x — is a complete computing system with DDR3, tons of GPIOs, Gigabit Ethernet, and those all-important PRUs stuffed into a single piece of epoxy studded with solder balls. This chip made it into tiny DIY PocketBones and now the official PocketBeagle is in stock in massive quantities at the usual electronic component distributors.

For this week’s Hack Chat, we’re talking about the BeagleBoard, BeagleBone, PocketBeagle, and PocketBone. [Jason Kridner], the co-founder of BeagleBoard and beagle wrangler, will be on hand to answer all your questions about the relevance of the Beagle platform today, the direction BeagleBoard is going, and the inner workings of what is probably the best way to blink LEDs in a Linux environment.

Topics for this Hack Chat will include the direction BeagleBoard is going, the communities involved with BeagleBoard, and how to get the most out of those precious programmable real-time units. As always, we’re taking questions from the community, submit them here.

As an extra special bonus, this week we’re giving away some hardware. Digi-Key has offered up a few PocketBeagle boards. If you have an idea for a project, put it on the discussion sheet and we’ll pick the coolest project and send someone a PocketBeagle.


Our Hack Chats are live community events on the Hackaday.io Hack Chat group messaging. This Hack Chat will be going down noon, Pacific time on Friday, October 13th. Wondering why the Brits were the first to settle on a single time zone when the US had a more extensive rail network and the longitude so time zones made sense? Here’s a time zone converter! Use that to ponder the mysteries of the universe.

Click that speech bubble to the right, and you’ll be taken directly to the Hack Chat group on Hackaday.io.

You don’t have to wait until Friday; join whenever you want and you can see what the community is talking about.

The Tiny, $25 PocketBeagle

It was announced a day or two ago, but now the PocketBeagle has made its first real-world appearance at the World Maker Faire in New York this weekend. This is a tiny, tiny Linux computer that’s small enough to fit on a keychain, or in an Altoids mini tin. It’s only $25 USD, and from the stock lists on Mouser and Digikey, there are plenty to go around.

The specs for the PocketBeagle are more or less exactly what you would expect from any BeagleBone. There’s an ARM Cortex-A8 running at 1GHz, 512 MB of RAM, and SD card storage. I/O is eight analog inputs, up to 44 digital GPIOs, up to 3 UARTs, 2 I2C busses, 2 SPI busses, and 4 PWM outputs. All of this is packed into the OSD3358 System on a Chip from Octavo Systems.

This isn’t the first time we’ve seen Octavo Systems’ ‘BeagleBone on a Chip’ — Before the release, head Beagle herder [Jason Kridner] built a PocketBone in Eagle, which was shortly followed by [Michael Welling]’s similar efforts in KiCad. The PocketBeagle has been a reality for months, but now it’s accessible to hackers who don’t want to deal with soldering BGA packages.

This version of the PocketBeagle is getting close to as Open Source as you can get, with the design files available in Eagle and KiCad. One interesting feature of the PocketBeagle is which pins, busses, and peripherals are enabled by default. The killer feature of the BeagleBone has always been the PRUs — programmable real-time units — that enable vast arrays of LEDs, fast steppers for CNC machines, and DMA tomfoolery. The pins for the PRUs on the PocketBeagle are set up by default, with no need to screw around with configurations, modules, or drivers.

Continue reading “The Tiny, $25 PocketBeagle”