Precursor – A mobile, open source electronics platform

5 years ago (bunniestudios.com)

I must admit while this cool, what I really want is a standard dirtcheap 8 to 10 inch Android tablet with a hackable OS and a row of gpio pins on it like the raspberry pi. $50 will get you a lot of power and convience today as these things are two a penny due to economies of Scale. Throw a usb-c video input and output onto it too, so it can use it as a touch screen monitor for my phone too. and I'm sold

  • It sounds like what you're looking for is the Pocket C.H.I.P. The company went out of business, but I bought one back in the day and it was so fun to hack around with.

    While writing this comment, I discovered that there's a website selling new old stock? Can't vouch for its authenticity, but you should go for it! https://shop.pocketchip.co/collections/frontpage/products/po...

    • I don't think that is akin to an 8 to 10" Android tablet/screen. Then again, I don't see how all the other products are related to the one mentioned here. Except they're all hackable?

      If you want a small device to play old games on via an emulator, I can recommend Pocketsprite [1]. You can even assemble one yourself.

      FWIW, I'm looking for a small portable screen (1080p, IPS) to combine with my MBP 2015 (via TB2 or HDMI but I also want it to have USB-C for future compatibility).

      [1] https://pocketsprite.com

      3 replies →

  • > what I really want is a standard dirtcheap 8 to 10 inch Android tablet with a hackable OS and a row of gpio pins

    Sadly, most of these points are mutually exclusive. Android tablets are built for the average user who would have neither use for an hackable OS nor for exposed GPIO ports. Adding them would represent an added cost with no returns with respect to the market they're into. Also, most if not all Android tablets - actually their manufacturers - are hostile to letting techies install their OS of choice, and implement tactics to discourage them, mainly keeping the hardware closed. To date, the Pinetab seems the best example of a tablet designed from the ground up to be of interest both to users and tinkerers because it encourages to experiment with open operating systems. https://www.pine64.org/pinetab/

  • I agree this would be cool, and the good news is that systems close to meeting your wishes already exist today.

    However, Precursor is more about evidence-based hardware security, and less about features and usability. To better understand the principles behind Precursor's design, please have a look at https://www.crowdsupply.com/sutajio-kosagi/precursor/updates....

    The TL;DR is that it's a development platform for applications that strongly require secure and/or trustable hardware.

    • The platform as usual looks great! I'd ask if you'd consider an addon board, or including an EZR32WG radio chip or similar, as it supports the open source Dash7 radio stack. I'm guessing that being able to tx wirelessly and securely would fit well with the hardware goals.

  • Sounds like a custom PCB, requiring custom assembly, and, worse yet, a custom enclosure. With sub-million quantities, economy of scale isn't exactly there.

    But if it's well-marketed to the hobbyists, and software support is adequate, then maybe.

    • Just like the PinePhone, Librem etc. This is the future for hackable (hardware and software) mobile devices given how locked down the mainstream consumer manufacturers are, and getting worse by the day.

      Mid-to-high 5-figure to low 7-figure unit sales (for a 'wildly' successful device like the Raspberry Pi) is what it seems to be looking like for a successful open mobile(-ish) device. As long as the businesses offering them are sized appropriately, it's doable. Just need to be smart about re-using enclosure designs etc and have long production runs to help amortize things like regulatory certifications etc. For hacker devices, they can sell this stuff for several years between major revs and their customers appreciate the longer product/parts availability.

  • The GPIO are provided by: CutiePi, RasPad, Sibo Q8919, or every tablet with a mini-jack port and a NXP OM13069 Quick-Jack board.

At the risk of wanting this to be something that it's not - what's the reasoning behind not targeting Precursor towards running (embedded) Linux? With a little more RAM it seems like the specs would make it a great fit for Linux, which might allow for a broader ecosystem of use cases?

Is there something I'm missing that means developing a new OS (https://github.com/betrusted-io/xous-core/) works better for Precursor? Keen to understand the rationale, cause I think I'm probably missing something here!

edit: There's a good explanation on the CrowdSupply page - seems like it's in order to make it a more secure platform:

> Simplicity addresses the reality of only having 24 hours in a day. Even though the full source code for the Linux kernel and Firefox is published, nobody has the time to personally review every release for potential security problems; we simply trust that others have done a good job, because we have no other choice. Precursor rolls the clock back to the early 2000’s, when mobile computers were powerful enough to be useful for single tasks, while simple enough that individuals or small teams could build them from scratch. But don’t worry, despite its simplicity, Precursor’s computational capability exceeds that of the Palm Pilot series. It’s more on par with a Nintendo DS: sufficient for core security tasks such as authentication, instant messaging, crypto wallets, and even end-to-end encrypted voice calls.

  • This is something that worries me about this project. Is the focus more on hackability, or security/inspectability? The messaging is unclear, and this decision looks like a big sacrifice of the former for the latter. I'd maybe be interested in this device but only for the purposes of DIY messing around, I'm nowhere near so worried about security I wouldn't trust the linux kernel.

    • This project is definitely security-first. That being said, we're defining "hackability" as "empowerment to hack". For example, this is one of the few platforms where you can hack the CPU itself by adding new instructions to it.

    • If you flash Linux onto a device like this, the constant stream of discovered and fixed Linux security holes is bound to eventually bite you without frequent & robust OTA update regimen that requires staffing. It's not really a "jury's still out" type of question: https://www.cvedetails.com/product/47/Linux-Linux-Kernel.htm...

      (Not that it's an easy with a simpler software stack either of course but you can have a fighting chance at least)

Wow, this looks awesome.

This formfactor, combined with a LoRa transceiver would be epic as an off-grid or fallback comms device.

I get fuzzy cyberpunk feelings imagining it.

Bunnie's projects are always intriguing. I'm still amazed by the investigation into sd card controller chips.

This scratches a fairly specific itch I've had for quite a while now — portable DIY electronics. At the moment, even if you use something as Lego-like as Adafruit's boards [1], you still need your primary logic board, a separate module to handling charging, a battery pack, a case that holds all of the above in place neatly, and more. Personally I don't find the keyboard to be a very attractive feature of Precursor, but all the rest of this project is super exciting and I can't wait to see them deliver on it.

[1] https://www.adafruit.com/

  • Personally I just use ESP32 (specifically Lolin D32) in an altoids-type box with a run-of-the-mill small USB power bank taped to the back. Usually with some level shifters and stuff to run the Blinkenlights (FastLED + ws2813).

    If that's too ghetto for you, have a look at the M5Stack series. A main unit (ESP32, screen, speaker, TF card reader, in a case with some buttons) costs $35, and the battery module you can stack on is $10. There is even a keyboard and a gameboy-like attachment.

    I like the look of the Precursor, but personally the FPGA is a bit off-putting, just because I've never gone down that road.

  • From TFA

    > if your application does not require a large display and a keyboard, you can simply remove them and replace the bezel with a full-sized circuit board

  • > This scratches a fairly specific itch I've had for quite a while now — portable DIY electronics

    Just the other day I found out about WiPhone: https://www.kickstarter.com/projects/2103809433/wiphone-a-ph...

    The project appears to be in a "limbo" state.

    • It's sad to see that. The project is interesting, but making it WiFi only restricted immensely its use. Although it seems obsolete tech, many countries still use 2G GSM phones (my phone is only GSM in fact). Adding a cheap SIM800 chip on a small removable board would turn this into a real phone, and the sales from people who needed GSM would help to cover for further development for the 4/5G version.

This looks lovely. I've long been looking for a hackable device in this form factor, albeit more with the intent of running Linux.

One thing I can't find any detail on is the keyboard. Making a keyboard from scratch is well outside of usual low-volume productions and there aren't any readily available parts in this form factor as far as I know. How is the Precursor's one made/sourced?

  • I'll be writing an article on this in the future, and you're right, the keyboard was a serious pain to build. It's one of the big reasons it took two years to bring the product to this state.

    • Thanks, I'm excited already!

      I'm using a Blackberry keyboard for my project, but that's obviously not scalable.

Bunnie (as you seem to be around here) — can the accel/gyro values be read/sampled? They’re listed under the “anti-tamper” category on crowdsupply so I wasn’t sure. Are there some specs on max Gs, sample rate, etc.?

I find this device extraordinarily appealing (will definitely be backing). Bunnie is a hardware hacker’s hacker, the project has at least 2 years of development behind it. It will most definitely ship, and work. Ha.

But — I’m specifically excited because this seems like an ideal platform to build whimsical mobile hardware projects.

My dream of a 2000-era electronic organizer with a “retro” (non touch) display, with physical keyboard, and battery, and programmable/hackable and fully open... this is truly a dream come true.

Why couldn’t this become the democratizing mobile Arduino-like hobbyist “base”?

I’m extra, extra excited about it!

(And dream of adding LTE and making a retro minimal... phone OS/“app”? Fast email + wikipedia clients??)

  • Thanks for the enthusiasm! I happen to be up really late tonight, but I'm going to bed soon. Thank you for the support and kind words.

    The accelerometer is the LSM6DS3, I'll refer you directly to the manufacturer's website: https://www.st.com/en/mems-and-sensors/lsm6ds3.html

    You can find out more about how it's integrated at https://github.com/betrusted-io/betrusted-hardware/blob/mast... (note: this is a "DVT" schematic, bugs were found, they are currently being fixed, but they aren't related to the accelerometer).

    The TL;DR is that the accelerometer is integrated so that it's in the "always on" untrusted domain, so to access it from the main FPGA "SoC" you have to go through the system controller FPGA ("EC" as we call it). The idea is for it to be available in power down states for anti-tamper, hence the extra layer of complication.

    Talking to it requires a call to the EC via the "COM" bus (https://github.com/betrusted-io/betrusted-soc/blob/master/fw...). The EC driver itself is based on the C-native library provided by STM and translated into Rust bindings. It's a little gross: https://github.com/betrusted-io/betrusted-ec/blob/master/sw/...

    Hope that helps.

  • > "Why couldn’t this become the democratizing mobile Arduino-like hobbyist “base”?"

    Well, for one thing, the XC7S50 FPGA costs over $50 just for the chip. This device is going to be much more expensive than an Arduino or even a Raspberry Pi.

    • That’s a very fair point, thank you.

      I do hope that the form factor, “polish” — how much of a finished product the Precursor is, and the possibility of programming/extending it can serve as an inspiration/starting point for future hobbyist mobile tech.

      I know that it’s a very heterogeneous mix, but just to note some contemporary devices that evoke “similar” feelings: Panic’s Playdate [0] and the recently crowdfunded Flipper Zero [1].

      Maybe all of these remind me in some ways of the Gameboy, electronic organizers from the 2000s [2], pre-smartphone Symbian Nokias [3] (and every qwerty/slide out keyboard device from back then), all of which I grew up with.

      But, it also seems like there’s a lot of interest now to create digital experiences that aren’t tied to existing social media platforms, aren’t engineered to simultaneously maximize addiction and profit (through advertisement and the sale of personal data).

      Developing towards that future is immensely exciting.

      0 - https://play.date/

      1 - https://www.kickstarter.com/projects/flipper-devices/flipper...

      2 - https://en.m.wikipedia.org/wiki/Electronic_organizer

      3 - https://www.pcmag.com/news/the-10-best-symbian-phones-ever

I really dig the slim and professional form factor, a lot of "portable" open-source hardware projects look like a bunch of PCBs stapled together, with wires and connectors hanging out everywhere.

I just learned of "dynamic reconfiguration", where a running device configures and commits additional logic units to a temporary task.

Is that possible, in principle, in a Spartan 7?

It is easy to believe that you would need to pre-generate bitstreams for each configuation, and could only swap them in verbatim, not generate them on-the-fly, but downloading from a library, perhaps with parameterized choices, could increase flexibility.

  • Most current FPGAs offer the option to have one configuration select a different bitstream in the configuration memory and have that replace itself. That allows a simple menu configuration to let the user select between several actual configurations. Or it allows over the air updates.

    In the specific case of Xilinx FPGAs there was a feature introduced in the original Virtex called "partial configuration". This has been present in all its products for the last 20 years. It allows a design to be broken into parts such that one part may be replaced even while the rest of the FPGA continues to work normally. This is pretty hard to use and the interface between the part being swapped and the rest of the circuit is rather tricky, so it has been use more for cool demos than actual products.

    It is possible to have the equivalent to this with non Xilinx FPGAs by having several smaller ones connected to each other on a board. Then dynamic reconfiguration of one can happen while the others continue to work normally.

    • Thank you. I guess it would be a bit much to hope for more auxiliary FPGAs on such a portable device.

This looks very nice, and actually pretty rugged. A few thoughts:

* Would it increase the complexity a lot to provide a linux-capable SoC as an additional chip? (OK, this could be a daughter board)

* "iCE40UP5K SG48, 98% utilized" <- isn't it a bit restrictive to start with such a low room for growth?

  • The iCE40UP5K is not the main processor. It's the embedded controller. Think of it as a power management coprocessor that takes care of things like managing the battery while the main CPU is asleep. It is packed to the gills, but the iCE40UP5K is low enough power to remain on and not drain the battery for several days.

    The main CPU is a Spartan7 XC7S50, which has plenty of space for things like crypto accelerator cores beyond the primary RISC-V CPU.

Interesting project but it seems like the schematics require proprietary and extremely expensive software to look at. Certainly beyond hobbyist reach. Why not develop with open source tools like Kicad? Kicad these days is mature enough to handle a project of this scale easily.

super interesting. I know things cost money, but I really hope they can hit a price point similar to pinephone or wiphone.

I remember there was a similar attempt years ago (probably between 5 to 10 years ago). I forgot the name of the startup but they were trying to build a non-phone mobile device that's programmable. I actually applied for beta testing and got one for free, but they ended up going out of business. I remember the color was ruby-ish. Can't remember the name. Anyone know what this was?

For me the attraction is a reasonable screen and keyboard - that sort of interface is by far the most difficult part of hardware projects.

Does that FPGA come with software tools that are backed by the FPGA vendor?

  • The XC7S50 is a Spartan7, which is supported by Vivado's WebPack edition (free but with many non-FOSS parts) as well as the FOSS SymbiFlow toolchain (I can't figure out which Place-and-Route tool that targets Xilinx 7-series parts they're using from the docs, but they imply one is at least vaguely usable) too.

    The iCE40UP5K will work with any IceStorm-based FOSS toolchain (including SymbiFlow) as well as Lattice's free first party Radiant tool (and I think also the older IceCube2 toolchain).

    It's a little odd that they're different vendor parts / on different 1st party toolchains, but it does look like you could program everything through the FOSS tools, albeit probably missing a few features (Last I looked a couple of the special purpose blocks in both the Xilinx 7-series and the UltraPlus were not fully understood by the FOSS stuff; that may have changed).

    I've been meaning to try Radiant, I teach some classes on top fo Vivado + Artix7 FPGA dev boards, and it's so much less awful than ISE (Xilinx's old toolchain) I'm still pleased with, but there are some nice, affordable iCE40-UltraPlus boards coming on the market, and if Radiant is less of a hassle (Vivado is a 25GB install and not _entirely_ beginner-friendly) I'd consider retooling.

Seriously cool. Love the attention to detail. I’ll definitely back whatever funding campaign is launched for this, I’ve got the perfect project in mind for a portable secure controller.

I love this. I like the form factor. I like the versatility of it that is being thought of from the start.

I just want a modern EEEPC in a 7" format with an FPGA for a brain rather than any processor, so you can build whatever you want.

The FPGAs could still be backdoored, and the WiFi chipset should receive a fair bit of suspicion. But I guess it is a good first step.

  • It’d be a pretty gargantuan task to backdoor the FPGA silicon itself. You’d have to have compromised Xilinx’s software and had some idea of what signals you want to tap. Kinda interesting to think about... I suppose that’s were open source tools for FPGAs would be nice.

    The image? Sure, could easily be backdoored, but that’s what open source is for; auditability.

    Edit: FPGA silicon is kinda backdoored by definition thanks to JTAG configurability/readability. (Barring cases where keys are used.) So I think the really interesting thing would be addition of nefarious logic by the design tools.

    • Well, yes, but in the past this type of device would be floated as an attempt to fight state-level actors. And... it can't do that. That's all I'm pointing out.

      Either the silicon, the synthesis software, or both could be compromised. Per leaked documents usually what gets attacked is random number generation, but there are more avenues I am sure.

      You can usually turn off JTAG, but having JTAG or other debug interface not be permanently disabled is actually an exploit class.

      5 replies →

    • the iCE40 chip used is supported by icestorm/yosys/nextpnr stack.

      But I do not know if the Xilinx reversing effort supports the Xilinx chip. That project is in a much earlier state of development.

      And I do have to wonder if an ecp5 (supported by trellis project) wouldn't have been able to do the job.

  • That could be true even if you sourced and programmed them yourself, no? We already know that AMD/PSP and Intel/ME are back footed, for example.

    How deep do you want to go down the rabbit hole? Are you capable of fabbing your own silicon?

    • interestingly, bunnie's previous take has been that fabbing your own silicon is likely less secure than using an fpga due to supply chain security

      if your asic if compromised in tranist, it's a total game over. if your fpga is compromised in transit, the attacker has to have some knowledge of target bitstream

      it has been argued that by making it easy for end users to rearrange the bitstream, an fpga can be more secure than an asic

      https://www.bunniestudios.com/blog/?p=5706

      6 replies →