76 comments

[ 9.8 ms ] story [ 138 ms ] thread
This seems like an interesting way for hacking whatever has a USB port. It is affordable, easy to use. I think this might interest any kid that wants to be remembered forever by hacking his school or university.
> I think this might interest any kid that wants to be remembered forever by hacking his school or university.

To any kids who want to be remembered forever reading this: be careful, the school may vindictively press felony hacking charges if they find out it's you. Source: This happened to me. Thankfully the charges were dropped by the judge.

>To any kids who want to be remembered forever reading this: be careful, the school may vindictively press felony hacking charges if they find out it's you. Source: This happened to me. Thankfully the charges were dropped by the judge.

Which case is yours?

Wow! Good to know that you seem to be doing fine. It hasn't always ended well. :(
"I want my name to be mentioned in the same breath as the Mona Lisa"
Imagine trying to imprison a child because they made "boobs lol" show up on everyone's screen
Not quite as affordable, but the o.mg cable is an existing option for this that's likely a lot easier to use.
I hope to see such devices available for USB-C one day. It doesn't need to sit flush with the outside casing, a PCB with a vertically mounted USB-C connector would already be awesome.
I mean, theoretically you could nest one of these in a USB-C adapter and have it that way. But yeah, this project mostly seems to leverage the novelty of USB-B's size.
(comment deleted)
> this project mostly seems to leverage the novelty of USB-B's size.

USB-A. A plugs into the host, B plugs into peripherals (its that square one that goes into printers, for example).

Oop, definitely time for that second cup of coffee.
Be the change you want to see in the world! You're looking for a "brick nogging" connector like [0]. It's not a trivial project, but it should be doable by a hobbyist.

[0]: https://www.lcsc.com/product-detail/USB-Connectors_Jing-Exte...

Out of curiosity, do you have any idea how the term "brick nogging" came about? To me that's a vertical PCB mount connector, and I cannot fathom the tortured translation path...
I don't know enough to confirm it, but one potential explanation from a forum thread [0]:

> As a native Chinese speaker, "brick nogging" is gibberish and completely incomprehensible to me. :-DD I was curious and just looked it up, apparently it was a mistranslation of "立贴".

> "立" means "standing" or "vertical", and "贴" is the short-hand for "贴片", which means "pick-and-place" or "SMD", so it just means "vertical SMD".

> One thing to know about Chinese is that one can create almost entirely arbitrary abbreviations and short-hands by combining characters from different words, a bit similar to Soviet and Russian government agency names like GosPlan, RosCosmos, or RosKomNadzor.

> The result is often not found in the dictionary, or by coincidence, they may clash with another existing but obscure word in the dictionary. In both cases, machine translation would produce incomprehensible results. For example, in this case it happens to form a word from architectural history.

[0] https://www.eevblog.com/forum/chat/where-does-all-the-weird-...

Honestly, at this point I am just happy there is a well-defined name for it.

Something like "vertical" could also be used to refer to a connector which is still aligned parallel to the board, but rotated 90 degrees so the insertion slot is oriented perpendicular to the board. This is usually called "side insertion", like [0].

Figuring out what stuff is called in the world of electronics is a surprisingly large part of the job. Part selection gets really difficult if you do not have a specific part number yet, but only have a generic concept you are looking for.

[0]: https://www.lcsc.com/product-detail/USB-Connectors_Jing-Exte...

You could buy an adaptor from A to C and it wouldn’t be flush . Honestly I have one of these and bought a small adaptor for that purpose . I really don’t want to mess up a USB port and easy removability is a win for me. Also I don’t think these will get fast speeds anytime soon so an adaptor is probably the best solution by far.
The Tomu family also has;

- The Fomu (FPGA Tomu) - https://fomu.im/ and https://workshop.fomu.im/

- The Qomu (ARM+eFPGA Tomu) - https://tomu.im/qomu.html

- The Somu (Secure Tomu) - https://www.crowdsupply.com/solokeys/somu

The Fomu is also a great RISC-V MCU prototyping platform.

I also have a general offer to send people who contribute to the open source FPGA tooling and ecosystem free Fomu boards.
> That's funny, a guy made this same offer to me at a conference once

oh wait, you're that guy

Conference Cluedo.

"It was mithro, in the hallway track, with the pogo pin programmer."

I have no affiliation here but whatever this guy is not lying - had a hella fun and got a free FOMU on a previous workshop.
What kind of contributions would be useful?
I stumbled upon the Tomu (and hence submitted this story) specifically because I wanted to get my hands on a small/cheap FPGA via the Fomu. Probably picking up the Somu as a Yubikey replacement too. Keep up the awesome work!
(comment deleted)
The wireless/bluetooth ones could be interesting as static appliances sitting inside a USB charger. I’m thinking room beacons for instance, or canary plugs to track which plugs are powered at any time, etc.
I'm silly. So many 'convertible' laptops cannot be used as tablet substitutes because they don't have volume or mute buttons at the edge of the enclosure when in tablet mode. I'd use one of these for volume up/down, mute, blanking the screen, locking the device, and authenticating. A bunch of "press this 3 times", etc. functions
Blanking the screen? The only use I can imagine is as a boss key [0]. A dedicated device stuck in the side of the laptop or keyboard is conspicuous and therefore antithetical to the goal.

Might AutoHotKey be a universally superior solution?

[0] https://en.wikipedia.org/wiki/Boss_key

> Blanking the screen? The only use I can imagine is as a boss key

You've never wanted to stop people wanting to read messages over your shoulder?

This is so common that most mobile/table operating systems have entire configuration systems about which parts of which messages to show on lock screens.

I don't do much computing in public, and am confident in the assumption my digital life is truly that unremarkable to 99% or more of humanity. ^^
If you can't install anything, having a small MCU board that can mimic a USB keyboard could be good enough. You could load up a bunch of different keyboard macros based on number and duration of button presses. A more dedicated keypad would be a lot more functional but this thing fits inside a USB port so it would be good for on the go.
For years I’ve kept a dedicated key mapped to `xset dpms force off` and tap it habitually when temporarily taking my attention away from the screen e.g. during lectures or when conversing with someone, as a small gesture of respect to the other party and a gentle guide for myself.
The opposite: a habit to take the device out when leaving the computer, so that you are at the box XOR it is locked. Pretty sure I have seen a similar solution actually using the on-device keys. (Had some coworkers that were quite intent on baggy-pantsing)
3 free beers if you manage to make this work with even a single specific machine

Edit: This was a bad way of saying "Possible, but not easy - anybody got something?"

I've done this with automatic locking. The idea being to have Tomu fob on my keychain, which must be inserted into the device for the display machine to be unlocked. Pull out the Tomu (which can be done by just grabbing my keys and yanking) and the laptop instantly locks, and starts a timer to hibernate.

It wasn't that complicated IIRC. This was a few years ago.

That's interesting - did you implement some kind of key exchange or just check for the device ID? And which OS?

I might have exaggerated a bit, probably it's pretty easy to do in a "works on my machine" kind of way...

I used a simple challenge-response protocol. It asked the device to sign a message to authenticate itself. I then listened to udev announcements to lock the machine if the device was unplugged.

It was more of a toy than a serious security device, and it would certainly need a lot more review before I recommend others to use it, but it was a fun exercise.

Pretty easy to register a HID device with dedicated keys for volume up / down and play / pause.
Had this, on a generic Ubuntu Linux workstation. evrouter to watch for a specific HID device "keypress" and remap onto a hotkey, KDE Plasma to have that hotkey trigger a screen unlock script, another script to lock the workstation if the HID device goes missing from USB tree. Nothing special (or secure - the whole setup hinged on the specific device ID, and would have worked with any other device of the same type), but a bit hairy.
Can we PLEASE have one with an IMU (accelerometer, gyroscope, magnetometer) in it? Even better if it can include a ambient temperature and barometer sensor as well.

Just have it constantly output data at max rate over a /dev/ttyACMx device in some specified format, no fancy drivers needed.

I'm curious what your use case is for such a specific combo of sensors. Most of these devices are meant for use on standard consumer laptops (as in most other situations a regular mini microcontroller dev board is more than suitable), but I can't imagine wanting to shake my laptop and know the temperature ;)
For one, it makes their sensor suite equal to what mobile phones have.

The IMU can be used alongside the camera for visual-inertial mapping and navigation, the barometer could be used for localization across floors of a building (yes the barometers in a phone are good enough to pick up on a couple meters' pressure difference), the IMU can also be used for shake-related gestures e.g. ignoring sporadic mouse movements when you're using a laptop in a car, they can be used for gestures e.g. slapping the laptop left and right to switch virtual workspaces, ...

For devices like the Somu I could see it be useful for locking the device if a certain shock occurred. For example, someone snatched my laptop at the coffee shop. Something Ross Ulbricht probably wishes he would have had.
Sorry about your loss but where was this?

Is theft around public places like a coffee shop now a thing?

"Laptop snatched at Starbucks" is a security incident scenario people frequently plan for.

And it worked out REALLY bad for Ross.

Be the change you seek in the world.
"be the change you want to see in the world"

~Not Gandhi

I looked pretty thoroughly through the site and the product pages, but I still cannot find any discussion of use cases for the Fomu. Is it just education, ie. learning how to program an FPGA? I'm having trouble telling if it even has any dedicated I/O or if you can exclusively interact with it through USB.
> I looked pretty thoroughly through the site and the product pages

> trouble telling if it even has any dedicated I/O or if you can exclusively interact with it through USB.

All the product pages say: "I have four contact pads that can easily be used to make two buttons. And I have an RGB LED, because everyone loves blinky things!"

Huh, honestly I think the first person threw me off there, I read that but didn't realize it was talking about the device.
Related:

Tomu – An ARM microprocessor which fits in your USB port - https://news.ycombinator.com/item?id=28395169 - Sept 2021 (53 comments)

Tomu, a tiny ARM microprocessor which fits in your USB port - https://news.ycombinator.com/item?id=17719848 - Aug 2018 (86 comments)

Tomu: An ARM board which fits inside your USB connector - https://news.ycombinator.com/item?id=16114778 - Jan 2018 (4 comments)

Thank you Dang, as always! However, I wonder if it's worth keeping the "family of devices" title from the website still. I'm personally not that interested in the ARM part of Tomu, and the reason I submitted the link was for non-ARM reasons (specifically because I think the Fomu is really cool). It seems like Tomu/Fomu is more of a series of microcomputers fitting into the USB form-factor at this point. I'm sure a Tomu expert can correct me if it's still primarily an ARM project.
Ok, I've put that bit back.
Relatedly, I would really like to have the opposite: a tiny x86 board that fits in a USB port (for my M1 Mac). It turns out that despite Rosetta 2, full-system emulation of x86 on M1 is still quite crappy, and it'd be great to have a full-blown Linux machine at hand.

I experimented with an x86-based ZenPhone...works OK, but that particular CPU was missing some SSE features that I need for my testing.

Anyone know of a something in this vein for x86?

There are mini stick PCs that are complete computers that go into a USB port for around $150.
Can you point to one? Usually the stick PCs will connect to an HDMI monitor, and may get power from USB, but this seems a different use case.
You're correct in that they only get power from USB. The HDMI sticks could display on the laptop with a HDMI-USB adapter. A slightly clunky but viable way to have a small, portable x86 computer.
Heh. Everything that goes around comes around…

I used to have a Mac6100 DOS Compatible, which was a regular PowerPC Mac, with a daughter board that had a complete 486DX2/66 system on it capable of running DOS/Win3.1/Win95.

(These days, I have an Intel NUC on my network to run everything that works better on x86 or Docker…)

Why does it need to fit in the USB instead of being accessible via network?

But if you really want this, I think the toybrick-rk1808 machine learning stick does this, although it is ARM not x86 Linux.

"It is equipped with Rockchip RK1808 Neural Processing Unit (NPU) features an accelerator delivering up to 3.0 TOPS and is coupled with two low-power Arm Cortex-A35 cores allowing it to run Linux."

https://core-electronics.com.au/toybrick-rk1808-ai-usb-compu...

And in the manual look for the documentation about "master mode":

> RK1808 AI compute stick with fedora operation system, Users can log in the fedora system for development and debugging via ssh. Root user’s and normal user’s password both are “toybrick”.

https://core-electronics.com.au/attachments/localcontent/RK1...

For my use case, it needs to be x86.
Is there no hardware-assisted virtualization software on M1 capable of running Linux? O-o
What is the usecase of this? I get it.. they're tiny, but why? They're too small to handle properly (how do you pull it out if you have fat fingers?), they're too small to properly solder on wires to connect whatever else, and when there are 4 wires soldered on, they're not tiny anymore,... The only way I'd use them is for some kind of "hacking" situation, when an emulated keyboard is needed, and one of these can be installed and stay hidden in someone elses computer.

Otherwise, i'd use something like this (not afiliated):

https://www.aliexpress.com/item/1005003668483454.html

Enough pins are accessible, led is visible, headers can be soldered on and development can be done with dupont wires, the led is visible, and they're not that large still.

If you need more (and wifi), you even have stuff like this: https://www.aliexpress.com/item/1005004860003638.html (again, not afiliated)

I wanted to make a permanent wake-from-sleep capacitive touch button for a PC that doesn't always have a keyboard attached. I tried to use the Tomu for that. Unfortunately, I never was able to wrangle its built-in USB functionality to stay awake when the PC slept.

They're not that hard to pull out. I did find it hard to find good examples for how to program the micro's capabilities, however.

Interesting. My laptop doesn't have auto-brightness adjustment. Could I use one of these and an SMD light sensor to add that functionality?
What is the... purpose of something so small? I can't imagine getting any real I/O onto the edge of this board.
I think is time to get a different class of this kind of devices. In the software world we have packages/libraries for pretty much everything. In the hardware world, in the hobby prototyping part, we have these "monstrosities" that can do everything, but not that great. I want a barebone arduino: a connector for power (let me deal with providing clean 5v), a connector for programming the mcu, a connector for external clock and a built in resonator/quartz. Make this in a easily breadbord-able package and off I go.

Obviously I could "build" the barebone arduino on a breadboard, but that means I have to redo the same thing every time I need to add a new mcu to my prototype. Or I could design and build the thing myself. I did this in the past, I've spent quite a few evening designing the thing, then ordered parts from China, then spent even more time soldering the things together. Just to piss off my cat that took a very long wee in the box I was storing the boards.

I think the success of Arduino in the hardware world can be explained in a similar way, as the relative success of "command line app frameworks" like Click[1], or even much lighter-weight libraries like argparse[2]. You absolutely can get away with using just getopt[3] (and people experienced with it will likely strongly prefer it). However certain factors such as a more declarative API, a nice logo, the existence of an ecosystem (even if you're not actively drawing from it), an official "branded" forum, etc can all play into picking a more complex solution, with more baggage you don't need, certain oddities that may throw users off, etc.

[1]: https://click.palletsprojects.com/

[2]: https://docs.python.org/3/library/argparse.html

[3]: https://man.openbsd.org/getopt.3, https://linux.die.net/man/3/getopt