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.
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.
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.
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.
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.
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.
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!
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?
> 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.
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)
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.
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.
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, ...
If you were willing to have a chain or giant sandwich hanging off your laptop you could probably cobble that together with an Adafruit Trinkey and the sensors along the lines of this:
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.
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!"
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.
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.
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.
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."
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”.
There is the Adafruit Trinkey, Raspberry Pi Pico based; but not quite as small: https://www.adafruit.com/product/5056 $7.95 (I bought one at MicroCenter); edit to add: "much more powerful CPU than the Tomu"
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):
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.
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.
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.
76 comments
[ 9.8 ms ] story [ 138 ms ] threadTo 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?
USB-A. A plugs into the host, B plugs into peripherals (its that square one that goes into printers, for example).
[0]: https://www.lcsc.com/product-detail/USB-Connectors_Jing-Exte...
> 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-...
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...
- 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.
oh wait, you're that guy
"It was mithro, in the hallway track, with the pogo pin programmer."
Just FYI the video on https://tomu.im/tomu.html isn't showing because it is private.
Might AutoHotKey be a universally superior solution?
[0] https://en.wikipedia.org/wiki/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.
Edit: This was a bad way of saying "Possible, but not easy - anybody got something?"
It wasn't that complicated IIRC. This was a few years ago.
I might have exaggerated a bit, probably it's pretty easy to do in a "works on my machine" kind of way...
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.
https://i.ebayimg.com/images/g/z1oAAOSwzJ5XUnDd/s-l500.jpg
Just have it constantly output data at max rate over a /dev/ttyACMx device in some specified format, no fancy drivers needed.
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, ...
https://learn.adafruit.com/diy-trinkey-no-solder-air-quality...
(might not be too terrible velcro'ed to the lid...)
Is theft around public places like a coffee shop now a thing?
And it worked out REALLY bad for Ross.
~Not Gandhi
> 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!"
https://www.crowdsupply.com/sutajio-kosagi/tomu/
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)
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?
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…)
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...
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)
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.
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.
[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