Review: Beepy, A Palm-sized Linux Hacking Playground

In the long ago times, when phones still flipped and modems sang proudly the songs of their people, I sent away for a set of Slackware CDs and embarked on a most remarkable journey. Back then, running Linux (especially on the desktop) was not a task to be taken lightly. The kernel itself was still in considerable flux — instead of changing some obscure subsystem or adding support for a niche gadget you don’t even own, new releases were unlocking critical capabilities and whole categories of peripherals. I still remember deciding if I wanted to play it safe and stick with my current kernel, or take a chance on compiling the latest version to check out this new “USB Mass Storage” thing everyone on the forums was talking about…

But modern desktop Linux has reached an incredible level of majority, and is now a viable choice for a great number of computer users. In fact, if you add Android and Chrome OS into the mix, there are millions and millions of people who are using Linux on daily basis and don’t even realize it. These days, the only way to experience that sense of adventure and wonderment that once came pre-loaded with a Linux box is to go out and seek it.

Which is precisely how it feels using using the Beepy from SQFMI. The handheld device, which was formerly known as the Beepberry before its creators received an all-too-predicable formal complaint, is unabashedly designed for Linux nerds. Over the last couple of weeks playing with this first-run hardware, I’ve been compiling kernel drivers, writing custom scripts, and trying (though not always successfully) to get new software installed on it. If you’re into hacking around on Linux, it’s an absolute blast.

There’s a good chance that you already know if the Beepy is for you or not, but if you’re still on the fence, hopefully this in-depth look at the hardware and current state of the overall project can help you decide before SQFMI officially starts taking new orders for the $79 gadget.

Hardware

To be clear, the Beepy itself is not a computer. It’s simply a board that combines a BlackBerry keyboard, a 400 x 200 Sharp Memory LCD, and a rechargeable battery. You’ll still need to bring your own Raspberry Pi Zero to complete the device, although SQFMI does plan on offering the Beepy with a Pi Zero 2 pre-installed as an option. Its design is covered by the CERN Open Hardware Licence v1.2, with the schematics and KiCad files already released by SQFMI.

The Raspberry Pi connects to the Beepy via a clever arrangement of flexible pins, which are held into place by the act of screwing it down into the metal standoffs. This means you don’t need to solder anything, and in theory, makes it easy to swap the Pi in and out. In practice though, I found the interface to be a bit finicky. It took several attempts before all of the pins clicked into place, and once it finally got lined up, I didn’t dare move it.

Luckily, you shouldn’t have to. SQFMI have broken out the Pi’s GPIO pins to standard headers on either side of the display. This makes it easy to add your own hardware, and prevents you from having to touch the header on the Pi itself. Thanks to the physical arrangement of the Pi when mated to the Beepy, you’ll also have access to its micro USB port (remember, only one of the Zero’s two ports can be used for data) and the HDMI port — though we’ll get back to the latter in a minute.

Keyboard

As previously mentioned, the keyboard is a genuine BlackBerry board. If you ever used one of these devices back in the day, I don’t have to tell you how good it feels. Sure it’s small, but the tactile response is great and they did an excellent job of making sure all the necessary symbols and punctuation marks were just an ALT key away.

After using the keyboard on the Beepy for awhile, going back to the touchscreen on my Google Pixel is a miserable experience, and I remember all over again how disappointing it was to see the mobile industry move away from physical keyboards.

The electronics that interface the BlackBerry keyboard with the Raspberry Pi are based on the BBQ20KBD from Solder Party. This includes the use of the RP2040, which on the Beepy also controls an RGB LED at the top left corner of the device. Source code for the RP2040’s firmware is provided under the MIT license, and it can be updated even without a Pi installed by holding down the “End Call” key as you plug in the USB-C cable, just like with the original BBQ20KBD.

Display

Arguably the most unique feature of the Beepy is its Sharp Memory LCD, which is reportedly the same model used in the Playdate. This technology is sometimes compared to eink, in that it uses very little power while offering high contrast and exceptional daylight readability. Like eink, it also doesn’t produce any light, so unfortunately you won’t be using Beepy in the dark. On the plus side its refresh rate is closer to that of a traditional LCD, so even when text is scrolling quickly, there’s no obvious ghosting.

Should you ever accidentally find yourself outside, you’ll have no trouble seeing the Beepy’s Sharp Memory LCD.

The display has a resolution of 400 x 240, and the documentation recommends you use a terminal font of 8×8 pixels to maximize how much information you can pack onto it at one time. Thanks to the excellent contrast of the Memory LCD the tiny text is more readable than I feared, but it’s still hardly ideal. Going forward, the viability of the Beepy will likely depend on how many programs can be adapted for this limited resolution.

Text on the Beepy is small, but very sharp.

Currently, there’s no official support for graphics on the Beepy’s display, but there is a very promising DirectFB2 port that you can install via an automated script. But be careful — not only does the script add a few hundred megabytes worth of packages to your system, it also has to compile several libraries from source. On the Pi Zero 2 this probably isn’t that big of a deal, but on the original Zero, it took quite a long time to complete the process.

Battery Life

The Beepy comes with a 2,000 mAh LiPo pouch battery that takes up most of the available space on the back of the board. With my multimeter sitting between the battery and the Beepy, I measured an idle current of approximately 250 mA with the Raspberry Pi Zero (expect this is to be higher with a Zero 2), which would result in a respectable run time of approximately eight hours.

Of course, you’ll probably want to do something more exciting with your Beepy than watch the terminal cursor blink. So I connected a USB audio adapter (the Beepy has no onboard audio hardware) and started streaming SomaFM. The added hardware and the bump in CPU utilization increased the current draw to 280 mA, which equates to roughly seven hours of runtime.

Next, I connected to Libera Chat and spent some time gabbing in #linux. The Beepy was now pulling around 310 mA, bringing the estimated endurance to a still very reasonable six hours. Oh, what I would have given in my younger days for a handheld device that would let me stay on IRC for most of the night without needing a recharge…

Things really don’t start getting too bad until you connect some beefier external devices. Running Kismet with an Alfa AWUS036H WiFi adapter brought total consumption to 700 mA, reducing the runtime to just about three hours. Tuning in with an RTL-SDR (Nooelec NESDR Nano 2) had the Beepy gulping down between 770 and 800 mAh, which would be enough to drain the battery in under two and a half hours.

Power Management

I’d estimate that’s about the shortest runtime you’re likely to see on a fully charged Beepy (at least with the Pi Zero), as any device that consumed more power than the SDR caused the hardware to lose power once it was plugged in. Curious to see where the weak link was, I pulled the datasheet for the TPS61090 boost converter listed in the schematics and was surprised to see it was only good for 500 mA. Taking a close look at the board I noticed that the actual component is a TPS61030, which is rated for a more appropriate 1 A. It’s unclear if SQFMI actually intended on using the lower-spec converter originally and then had to bump it up later, or if it’s simply a case of using a convenient footprint in KiCad — as of this writing, there doesn’t seem to be a public Bill of Materials to cross reference.

Incidentally, you’ll want to avoid draining the Beepy’s battery too deeply if you can help it — according to the schematics (and confirmed on my actual hardware) SQFMI have used a 10K resistor on the “programming” pin of the TP4054 charging IC. That sets the chip’s charge rate to a measly 100 mA, which means a full recharge of the battery would take somewhere in the neighborhood of 20 hours. It’s hard to believe this was intentional, and may be addressed on a later hardware revision.

Note: While I didn’t experience any issues personally, it’s worth mentioning that there are several reports among those who’ve already gotten their Beepys that the TPS61030 can fail without warning. The chip apparently shorts internally, which in turn causes the nearby inductor to get extremely hot. Functionally, the result is a completely dead device, as power from both the USB port and the battery are routed through the same chip.

There’s actually a report about this exact problem on the Texas Instruments support forum that dates all the way back to 2011. The official advice from TI even back then was to upgrade to a newer and more reliable component, so if the failure rate is as high as some users suspect, it’s possible this component will be swapped out in a new board revision.

Software

With the Beepy, SQFMI is basically just selling you the hardware. While they do provide a script that will automate installation of the necessary kernel drivers on a stock install of Raspberry Pi OS, there’s little else in the way of official software. Even core functions like blinking the notification LED to checking the battery level aren’t actually implemented. The documentation simply tells you which I2C addresses to poke, and leaves it to the community to figure out what to do with that information.

For hardware hackers and Linux graybeards, that’s no problem at all. Actually it’s kind of exciting, and sort of the point of buying a device like this. But anyone who thinks they can just buy the Beepy and start using it like a regular consumer gadget is going to be in for a rude awakening. To be clear, SQFMI is absolutely upfront about this fact, though I’m sure that won’t prevent people from complaining about it anyway.

The Beepy will run anything you throw at it…so long as you can run it in the terminal.

As for what’s provided by the setup script, namely the drivers for the keyboard and display, they seem to work perfectly fine. Like I mentioned previously, the default environment doesn’t support graphics on the Sharp Memory LCD, so you’re essentially limited to programs you can run in the terminal. Fortunately, there’s no shortage of those. Some need minor tweaks to work on the Beepy’s small display, but if you’ve gotten this far, that shouldn’t be an problem.

What you might not expect though is that the HDMI port, at least under the current software, doesn’t actually work. More specifically, when the Memory LCD driver is loaded, the console is moved over to a different framebuffer. So while you might think you can just plug the Beepy into your TV when you get tired of looking at its tiny screen, you’ll actually find it’s not outputting anything. There’s some talk of trying to set the HDMI port up as a secondary graphics-only output, but I haven’t seen anyone actually submit a patch for it yet. In a pinch you could of course reconfigure the kernel and reboot to get the HDMI working, but that would take the Memory LCD offline.

Still, you’ve got a full-fledged ARM Linux system at your disposal here. While it could stand to have better integration with the hardware, it’s hard to complain when so many incredible possibilities are on the table. Being able to pull down a Git repo and compile some new tool right on the Beepy is a liberating experience compared to what’s traditionally been possible in a form factor like this.

Documentation

If there’s anything negative I can say about the Beepy right now, it’s the state of the documentation. Outside of the single  “Getting Started” page, most of the documentation is either incomplete or simply missing. Matters are further complicated by the haphazard name change. Some documents and repositories still use the name Beepberry, while others have been changed over, and it’s not uncommon to come across a link that now returns a 404 because of it. It’s usually not too difficult to figure out, but it can be a frustrating experience if you’re not familiar with the situation.

There’s plenty ToDo in the Beepy docs.

But the bigger problem is that so much of the crucial information about the Beepy is tied up in the project’s Discord and Matrix servers. While it’s clearly important to have a centralized place for users to chat and discuss issues, at some point that information needs to be packaged up and presented in a less ephemeral way. For example, you’d never know about the DirectFB2 port unless you joined the Discord server and scrolled the discussion back by several weeks.

Now to be fair, Beepy is hardly the first project to suffer from this issue. In fact, it’s a big problem right now that’s impacting many open source efforts…but that’s a story for another time. Plus we can’t ignore that the project is in its infancy, and that writing in-depth documentation doesn’t make a whole lot of sense while so many details are still in a state of flux.

But the fact remains that there’s going to be a big wave of new Beepy users once sales open up, and unless things are improved before then, there’s the potential for a lot of duplicated effort and wasted time as folks struggle to figure out the true state of the project.

Final Thoughts

At $79, the Beepy hardware is an absolute steal. The BBQ20KBD alone would cost you $30, and Adafruit wants $45 for a comparable Sharp Memory LCD. Plus, if you order the Pi Zero 2 through SQFMI when you buy the Beepy, you can actually get it at non-scalper prices. While it’s very much a hacker’s toy rather than a complete product, I’m confident that the situation will improve as more people get their hands on the hardware and start pitching in to improve the software and documentation.

If I’m honest, part of me does wonder if the overall package wouldn’t have been a bit more approachable had it used a more traditional touchscreen LCD. Having access to a graphical environment, even one as limited as it would undoubtedly be given the meager abilities of the Pi Zero and the diminutive display area, would have opened up some exciting possibilities that just can’t be realized with the Sharp Memory LCD.

Then again, would we even be talking about the Beepy if SQFMI hadn’t taken the road less traveled? At the end of the day, the Beepy is defined by how unique it is, and in a world where our mobile devices seem increasingly monolithic, there’s something undeniably appealing about trying something different.

46 thoughts on “Review: Beepy, A Palm-sized Linux Hacking Playground

    1. Heh, I actually started to write a widget library for my zaurus ten years ago so that I can run graphics applications on the framebuffer. And long story short, it’s getting ready to be useful at this point along with some apps and work-in-progress application multiplexer. And yes it still runs fine on SL-C1000 as well as on a desktop.

      https://github.com/gfxprim/gpdict
      https://github.com/gfxprim/gpplayer
      https://github.com/gfxprim/gppdf
      https://github.com/gfxprim/gptop
      https://github.com/gfxprim/gplife

  1. my first thought was how much i lusted after such a product like this back in the 2001-2005 sort of era, and how weird it is to know i could have it today for so cheap and i don’t even care.

    but the second thought is, jeesh, raspberry pi abuse! again! back in the day, i had an ipaq h3765 running linux on a strongarm. its power-on draw was decently low, and then you’d press the hardware power button and it would immediately go into a sleep mode. the cpu clock would stop but the DRAM refresh would continue, ready to wake fully in an instant. it could last like that for days. i don’t even remember how many days but i used the DRAM as non-volatile storage (a ramdisk) even when i was travelling, even when it was so old that the battery almost couldn’t hold a charge.

    and sleep mode on modern devices (phones, tablets) has gotten so advanced that the CPU clock doesn’t even turn off…these pocket supercomputers keep one core powered up at some pathetic clock rate (or duty cycle) even when it’s sleeping, and it still lasts a week!

    the pi and pi zero products simply are not suitable for mobile devices. they do not have any kind of sleep mode. all of the driver stack that you’d need to hack to get it to sleep is hidden in proprietary blobs. it is simply unsuitable for this use, full stop. it’s an amazing piece of kit with a lot of uses at an astonishing price point but it is not a mobile cpu by any stretch of the imagination!

    and to top it off, even the pi zero is still on the edge of unobtainium. you can’t even justify it by its ubiquity.

    1. Raspberry Pi doesn’t sleep but … so what?
      People carry laptops around as well and use them even though most of them go flat within a couple of hours.
      People enjoy making things with RPi, and enjoy being able to make and interface to all sorts of stuff, that’s the main reason for RPi, not how great of a PDA it makes.

      1. i remember it well…in 2001 i was paid to fix a premium PC laptop that had a new sleep feature, which was broken…in 2004 i bought an ibook because it was the only laptop i knew had a strong sleep function…and by 2010, every single laptop has a fantastic flawless sleep function out of the box…and now it’s 2023 and we can’t even remember laptops that can’t sleep.

        and my laptop doesn’t just sleep when i close the lid or go idle at the keyboard…it also draws dramatically less current when the CPU is idle even when it’s fully powered-on. and it can turn off all of its peripherals one by one. i don’t use bluetooth, so it isn’t drawing power.

        raspi has none of that. raspi has a high baseline consumption even when it’s totally idle. the driver stack is such a proprietary charlie foxtrot that you can’t ever turn off subsystems. it can’t sleep.

        anyways i happen to agree. raspi is great for some things. it’s just a travesty to hook it up to a battery for a portable device. it’s always going to be a disappointment and a struggle in that role. sometimes maybe you do it because the hack doesn’t allow anything else. for a one-off, maybe a remote monitoring station that wakes up once a day and needs to do some networking and image processing tasks that require a big cpu. but productizing it is yuck.

      2. Power management and battery life are the cornerstone of practical, useable consumer electronic devices. Nothing is ever going to make it using a Pi as the core simply because they are so power hungry.

        I developed a hand held device using the same Sharp display, their performance in daylight and string sunlight is spectacular.

    2. Btw. on a previous article about this thing I was complaining in comments about the lack of SBCs with functioning s2ram while having very low footprint and somebody recommended me PocketBeagle which I was not aware that it existed. Bought one but I haven’t had time to work with it since :D
      Raspberry Pi is truly an abomination for its lack of sleep.

      1. A wireless terminal connected to a bigger system in your pocket, backpack, attached to your belt, … might be an idea too. The mobile part would need the smaller battery, the horsepower elsewhere a bigger one, but that wouldn’t hurt in that different place.

    1. Different things for different purposes, only similarity is the form factor. The T-Deck uses a microcontroller, so it will have much lower power draw overall because you can deep sleep while not in use. It is however less powerful and doesn’t run Linux so you have to write your firmware end-to-end. The Beepy runs Linux so it’s much more powerful as far as what you can do with just installing some software and running it directly, however battery life will be crap as stated in the article.

  2. Slackware CDs? Hah. In the mid-90s I surreptitiously used my 2400bps modem to download Slackware floppies from a long-distance BBS 3 states away. It took hours (I think I just got sets A B and X.) Parents were not pleased.

  3. Regarding battery life, note that just by using two paralleled cells one can double it easily at the price of a slight (a few millimeters) increase in thickness. I for one would never trade battery life for thinness.

  4. Not a mention of the C.H.I.P. Is surprising to me. It went out of mainstream Debian support a couple of years ago, but there is an update, Same issue with Discord docs tho!

  5. Sadly, I’m one of the folks that had their Beepy die, after just a few hours of use. Hadn’t even gotten the OS completely configured, much less my own GPS app installed on it. It went dark, and stayed dark, regardless of fiddling. I’m assuming it’s the TI power management chip.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.