At Last, Chumby Is Ready

It has been two years, but the slow and steady progress that [Doug Brown] has been making towards bringing a modern Linux kernel to the Chumby has approached the point that it could be called done. In his final blog post of the series, [Doug] walks through the highs and lows of the whole process.

Many of the changes [Doug] and others have made are already upstream in the Linux mainline. However, some will likely remain in private branches for a few reasons that [Doug] gets into. The blog post covers every commit needed to turn a Chumby or other Marvell ARMADA-powered widget into a working device. At the end of the day, what does [Doug] have to show? He can turn it on, see a boot logo, and then see an indefinite white screen. While underwhelming to most of the world, an X server is coming up, Wi-fi is online, the time syncs from an NTP server, and the touchscreen is ready to be tapped. A white screen, yes, but a white screen of potential. [Doug] has to decide what to launch after boot.

However, the future of the Chumby and other older devices is still on the chopping block of progress. Compiler writers want to drop support for platforms that nobody uses anymore, and the Chumby is ARMv5. With many changes destined to languish, [Doug] still considers it a huge success, and we do too. The whole series represents a journey with beautiful lessons about the power of the Linux device tree, making the dark and scary world of Linux kernel drivers seem a little more approachable.

We’ve covered the first post and when graphics started coming along. We salute the mighty Chumby and the idea it stood for. Of course, the idea of a handy screen displaying information is still alive and well. This handy e-paper HomeAssistant display is just one of many examples.

WiFi, PWM Backlight, And Graphics On Updated Chumby Kernel

For some, the Chumby was a peek at what could have been. That vision never died for [Doug Brown], and he has been working tirelessly on bringing mainline Linux kernel support to the customizable smart display. He has posted several updates but recently got graphics and the PWM backlight working.

Of course, we covered when [Doug] first started working on the new kernel, so it’s high time we revisited the progress. The WiFi hardware uses a Marvell 88W8686 chipset, which talks over the SDIO bus, so it’s a matter of convincing the libertas driver to talk to it. With a USB to Ethernet adapter, [Doug] could boot new kernels over NFS, so he didn’t have to walk over to swap the SD card. After dealing with an unhandled fault when trying to read the SDHCI_HOST_VERSION register, [Doug] had access points showing up in NetworkManager but could not connect. As a nasty hack, he temporarily removed the interrupts and switched to polling in the driver. While that worked, it would never get upstreamed. A critical interrupt was being dropped, and commands went out of sequence. A second, perhaps ugly hack, read a register after acknowledging an SDIO interrupt, which seemed to work. But it was still a hack, and [Doug] wanted something cleaner. In a blind stroke of luck, he found the errata online and noticed that it mentioned that an interrupt could be missed when a signal was asserted. After following the workaround with a lot of head-scratching and deep diving, he had a fully working WiFi driver.

Graphics were a more straightforward endeavor compared to WiFi. He enabled the simpledrm driver (similar to simplefb) but using Direct Rendering Manager. He had a working panel that could run Qt apps by adding the frame buffer to the device tree with the correct compatible string, registers, and data. However, there was a Vivante GC300 graphics accelerator onboard that he wanted to use. A driver for Vivante GPUs already exists in the kernel, but after enabling it, the driver detects the GC300 and then starts complaining. He discovered that older revisions of the GC300 (like the ones found in Chumbys) mapped registered at different addresses and didn’t set some bits in their idle registers. Of course, just loading a GPU driver isn’t quite enough. He modified an x11 server that supported Vivante accelerators to support the GC300.

For hacking purposes, [Doug] set the backlight GPIO high. While easy to see, perhaps not the best for a device meant to blend in. The PAX166 comes with PWM hardware, though confusingly, it has two PWM modes for pin 84. PWM1 and PWM2 share some common clock and reset bits in a decidedly undocumented way. PWM2 doesn’t work until you configure and then turn off PWM1. However, the backlight turned off once out of UBoot and into Linux. Linux re-initialized the hardware too quickly, causing the device to freak out. This was solved using the abrupt shutdown register.

It’s a journey through debugging, Linux internals, and device tree hackery. Perhaps the most incredible thing is that these changes are submitted for upstreaming to the Linux kernel, with many landing in Linux 6.2. While it’s a shame new Chumbys aren’t being made, making your own smart display has never been easier.

Chumby Gets New Kernel… Soon

If you missed the Chumby, we’re sorry.  They were relatively inexpensive Linux appliances that acted as a clock, Internet radio, and feed reader. The company went belly up, although there was some functionality remaining thanks to one of the founders and now, for a subscription fee, you can still keep your Chumby operating. However, [Doug Brown] bought one with the goal of using it for his own applications. But the 2.6.28 kernel is showing its age. So he decided to push a new kernel on the device.

If you are a Chumby enthusiast, don’t get too excited. The goal isn’t to provide the existing Chumby apps with a new kernel, [Doug] says that’s probably impossible. Instead, he wants a modern booting infrastructure and kernel on the device for his own software.

Continue reading “Chumby Gets New Kernel… Soon”

Homebrew Mini-Chumby Blends 3D Printing, ESP8266 And A Touchscreen

We were all despondent when our Chumby’s went dead. And plans to hack at least one of them died when the device quit powering on. [Spiros Papadimitriou] must have missed his too because he’s made a good start at making his own wireless, touchscreen, smart clock.

In all honesty, it isn’t much of a Chumby replacement yet. It has a clock and can control some devices. There’s some hooks to add a weather display that isn’t finished yet. Still, it is a working first step. Of course, anyone can take a Raspberry Pi (or similar), a Wifi dongle, and a touchscreen and do the same thing, right? Maybe, but it is a lot harder to make one you (or your significant other) wants on your nightstand. [Spiros] took a lot of time to design a beautiful 3D printed case.

Continue reading “Homebrew Mini-Chumby Blends 3D Printing, ESP8266 And A Touchscreen”

Judge Spotlight: Andrew “Bunnie” Huang

judge-spotlight-bunnie

This week’s Judge Spotlight focuses on [Andrew “Bunnie” Huang]. If you haven’t heard of him you need to pay more attention. His hacker cred goes way back to the original Xbox, which he reverse engineered and laid bare its security flaws. Maintaining his hacker spirit he went on to design and hack the Chumby. More recently he took on the challenge of developing and Open laptop called Novena. All of this while continuing to explore and experiment with all kinds of electronics, posting about his adventures for those of us that care about an electronics ecosystem that doesn’t shut out the user from tinkering with the hardware. Join us after the break for our conversation with The Hackaday Prize judge [Bunnie Huang].

Continue reading “Judge Spotlight: Andrew “Bunnie” Huang”

Making A Dropbox With A Chumby And Bittorrent

chumby

Since the Chumby servers went offline earlier this year, [Huan] found himself with a few of these tiny, extremely hackable internet devices lying around. He’s also getting tired of his NAS and wanted a way to sync folders between all his computers. Combine the two desires, and you can make a personal cloud with a Chumby, thanks to some help from the people at BitTorrent Labs.

[Huan] is using BitTorrent Sync for his Dropbox-like server. After creating a webkit interface for BitTorrent Sync, [Huan] loaded up his Chumby with new firmware, set up a few folders to be synced, and let the Chumby do all the work.

It’s not exactly fast, given the Chumby’s wireless connection and USB 1.1 for an external disk drive, but it’s more than enough to keep your personal project folders synced across multiple computers. As a bonus, it’s also very, very secure, getting around most of the security problems cloud solutions entail.

WebKit On Chumby Lets Developers Avoid Flash

[Huan Truong] was looking for an Internet interface for one of his projects. In this case it’s a temperature logger, but it could be just about anything. He decided to give the Chumby a try, but was turned off by its use of Flash as the app framework. He decided to open up more options by running WebKit via his custom Chumby’s firmware.

In the video after the break he shows the boot sequence and demonstrates his first app. The device runs through a screen calibration as it powers on. When the app comes up it looks and responds much more like an Android or iPhone app than the Chumby interfaces we’re accustomed to. This technique gives you pretty wide range of app development languages. That’s because all the Chumby really cares about is the index.cgi file that serves as the interface. Development and debugging can be done on a desktop (not that it couldn’t before but Flash development under Linux was always a pain).

It looks like this idea isn’t new, but we don’t recall seeing any other projects that used WebKit as an alternative Chumby interface.

Continue reading “WebKit On Chumby Lets Developers Avoid Flash”