
Precursor – A mobile, open source electronics platform - zdw
https://www.bunniestudios.com/blog/?p=5921
======
thawkins
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

~~~
buzzert
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...](https://shop.pocketchip.co/collections/frontpage/products/pocket-
c-h-i-p-new)

~~~
Fnoord
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](https://pocketsprite.com)

~~~
epmaybe
If just looking for a portable display, there are plenty on amazon. I bought a
Chinese brand, magedock, because they had a touch screen 1600p model that was
more portable than the others (no battery though).

~~~
Fnoord
Yeah, Amazon is such a rain-forest though. There's a plethora of devices
there, and I don't trust the reviews. I'd prefer a 14", don't require
touchscreen (though if it would cost me 50 EUR, I'd go for it, but not double
the price like ThinkVision M14t). Speaking of which I've seen the ThinkVision
M14 for 180 EUR, that's a fair price. It has high brightness of 300 nits
(better than the Asus one, of which the 16" gets recommended a lot even though
its barely readable in sunlight), though reportedly also has coil whine.
However, it _only_ supports USB-C. So I would need some kind of adapter I
guess. A lot of the Chinese stuff has the adapters included, but even the
brandnames just don't make sense. Magedok was out of stock (they didn't have
Magedock). Battery I don't care for; I'd just hang a powerbank behind it with
velcro.

------
bibabaloo
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/](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.

~~~
arc-in-space
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.

~~~
bunnie
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.

------
ysleepy
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.

~~~
gautamcgoel
What is LoRa?

~~~
anon73044
[https://en.m.wikipedia.org/wiki/LoRa](https://en.m.wikipedia.org/wiki/LoRa)

------
Etheryte
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/](https://www.adafruit.com/)

~~~
semi-extrinsic
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.

~~~
ncmncm
Step up to FPGA. There has to be a first time.

------
dvdkon
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?

~~~
bunnie
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.

~~~
dvdkon
Thanks, I'm excited already!

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

------
gregsadetsky
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??)

~~~
bunnie
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](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...](https://github.com/betrusted-io/betrusted-
hardware/blob/master/mainboard-dvt1/trusted_io_dvt1.pdf) (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...](https://github.com/betrusted-io/betrusted-
soc/blob/master/fw/src/main.rs#L849)). 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/...](https://github.com/betrusted-io/betrusted-
ec/blob/master/sw/gyro_bindings/src/lib.rs)

Hope that helps.

~~~
gregsadetsky
You don’t know how flustered I am at your response. Thank you so, so much...!

------
gautamcgoel
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.

------
ncmncm
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.

~~~
jecel
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.

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

------
intricatedetail
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.

------
MayeulC
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?

~~~
bunnie
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.

~~~
analognoise
What kind of crypto accelerator would be most interesting to people?

~~~
nullc
What I think would be most interesting is whatever primitives are needed to
build fancy cryptosystems which are resistant to EMI/DPA sidechannels.

Plain TLS stuff as the sibling comment suggests is entirely uninteresting to
me-- a boring software implementation is more than fast enough even on a
100MHz device to accomplish whatever that 100MHz device is going to
accomplish. (I assume bunnie's Betrusted soc will be faster than 100MHz too).

But what you can't do from general software is get something which is
extremely robust against EMI and power sidechannels.

Similarly, while plain ECDH/etc. will be more than fast enough even in
software for 99% of applications you'd want to run on a small device like
this, various zero knoweldge proofs and other fancy constructions may still be
painfully slow (as they're often noticably slow on desktops).

Unfortunately the ed25519 curve is probably not really the best choice there
for a primitive to optimize due to the cofactor being an extraordinary
nuisance for other applications outside of plain signatures and key agreement.
... but group choices for ZKPs are by-far not a settled question.

~~~
bunnie
We've got a curve25519 accelerator for the reference hardware:
[https://ci.betrusted.io/betrusted-
soc/doc/engine.html](https://ci.betrusted.io/betrusted-soc/doc/engine.html)

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

------
cocktailpeanuts
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?

~~~
cxr
Are you thinking of the long-delayed DragonBox Pyra from the Pandora
community?

[https://pyra-handheld.com/boards/pages/pyra/](https://pyra-
handheld.com/boards/pages/pyra/)

~~~
cocktailpeanuts
no the project I'm talking about looked similar to this one but a bit shorter
vertically, and the one I owned had a dark pink (or ruby) color. Had the same
blackberry type keyboard too. It was a startup, and they shut down eventually.

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

------
oehtXRwMkIs
I found a typo where the "are" is duplicated:

> enclosure’s length and thickness are are parameterized.

~~~
bunnie
thanks, fixed.

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

~~~
PAPPPmAc
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.

~~~
intricatedetail
Isn't Spartan a legacy platform?

~~~
PAPPPmAc
The Spartan 3/3E/6 lines are legacy parts (and hence stuck on ISE for
programming, so you don't want them). The Spartan 7 parts were a late addition
(not shipping until 2017) to the 7th gen line for the low end; they use the
7th gen blocks and tooling, but are "cost optimized" and lack the fancy
transceivers and such - though irritatingly the cost and resources of the
Artix and Spartan parts have a lot of overlap; Spartan7 parts run from about
$15-140 in single, Artix7 parts from about $25-430.

------
ObsoleteNerd
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.

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

------
analognoise
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.

------
R0b0t1
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.

~~~
jackyinger
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.

~~~
R0b0t1
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.

~~~
colejohnson66
What’s stopping the toolchain for your micro from being backdoored as well?
The chain of trust has to start somewhere.

~~~
contingencies
This is the likely target for NSA. Intercepting supply chains for stock parts
inside of China is not their specialty. Further, to bother with custom
hardware would require substantial resources and time to develop before even
getting it deployed. Nobody is going to do that. Bunnie's compiler just
changed checksum...

To fight such an attack, the output of deterministic builds running on
geographically dispersed systems with disparate stacks (physical, cloud, newly
purchased, multiple OSs, etc.) may be compared before release.

The protected body of software should also include the firmware upload
utilities.

Another attack, given the open source nature of the device, could be
distributing cheap, compromised units broadly after the fact to ensure they
are widely adopted.

~~~
javajosh
_> Intercepting supply chains for stock parts inside of China is not [the
NSA's] specialty_

 _> Another attack, given the open source nature of the device, could be
distributing cheap, compromised units broadly after the fact to ensure they
are widely adopted. _

I like thinking about high-level threat models as much as the next guy, but
these two statements seem to be at odds. Unless by "compromised units" you
don't mean what I think you mean.

~~~
contingencies
First was referring to supply chain interdiction for third party fabricators
attempting to produce non-compromised units. Second was referring to active
fabrication and distribution of compromised units to unsuspecting consumers.

~~~
javajosh
Oh, ok. So its the difference between opening the box to put in a wayward
chip, versus starting a factory who makes units with the wayward chip to begin
with. Fair enough.

------
motohagiography
Best name.

------
agumonkey
modern pocket calcs

~~~
gabcoh
[https://www.numworks.com/](https://www.numworks.com/)

~~~
agumonkey
that's modern old school calcs, huang's thing has data input and an fpga,
that's a new view on the topic

