You don’t need expensive equipment for VoLTE/VoWiFi research! Learn how VoLTE/VoWiFi works by setting up your own Wi-Fi calling server with free software.
There’s no practical use for this (you can’t connect your private phone network to the real phone network, so you can only call yourself), but it’s fun!
There was a brief time in the early 2000s when we carried cellphones, wallets, keys, and a bespoke digital media player loaded with a small selection of our music libraries. Devices like iPods, Zunes, Sandisk Sansa, and iRiver. Then as cell phones gained more storage and processing power, the two devices became one, and audio players slipped to obscurity as sports accessories. Perhaps in that vein, [BalderDragonSlayer] made his own Raspberry Pi-powered media player.
For the holidays, I decapped a chip that plays three Christmas melodies. The UM66T melody chip from the 1980s was designed for applications such as greeting cards and toys. It looks like a transistor, but when connected to a battery and speaker it plays music. The die photo below shows the tiny silicon chip that I reverse engineer in this blog post.
When I heard about Radxa’s Taco—a Raspberry Pi Compute Module 4-powered NAS/router-in-a-box—I knew what must be done.
Load it up with as much SSD storage as I can afford, and see what it can do.
And after installing five Samsung 870 QVO 8TB SSDs and one Sabrent Rocket Q NVMe SSD—loading up every drive slot on the Taco to the tune of 48TB raw storage—I found out it can actually do a lot! Just… not very fast. At least not compared to a modern desktop.
Time to add one more device to the list of unusual things that run Doom!
Now, as the title says, we will be targeting a $13 (excluding shipping) Bluetooth LE USB adapter.
This adapter is based on the nRF52840, an IoT RF microcontroller (MCU hereafter), by Nordic Semiconductors (Nordic hereafter).
The purposes of this project are:
Port Doom to another device, which is not meant to play Doom at all.
Port Doom to the nRF52840 MCU, i.e. to all devices based on the same microcontroller, provided they have enough accessible GPIOs, to add a QSPI memory, and a display.
Show once again that some everyday-use low-cost devices are actually powerful enough to run Doom (even faster than you used to on 1993), despite their apparent simplicity.
Im somehow interested in audio production, but only as my hobby. My main job is lead of control system installation in research facility. So that means I usually dont want to spend huge money on the equipement.
And rigth about now is quite good time to get some old-ish wireless audio equipement for decent price. The reason is that there was change (info) in wireless bands and bands that were free before are not avaliable for the professional audio eq. That means that lot of productions are ditching their stuff to buy new one, compatible. But not all the old stuff is useless as some of it can be reprogrammed. As there is tigth window from 822 to 830 Mhz in EU. This window is quite narrow, but at least it free all the time. Other option is to go below 700Mhz, but then you migth get into collision with local TV transmitter. So I settled for the narrow band since I dont plan to use too many transmitters at once.
The “double ratchet” algorithm is integral to modern end-to-end-encrypted chat apps, such as Signal, WhatsApp, and Matrix. It gives encrypted conversations the properties of resilience, forward secrecy, and break-in recovery; basically, even if an adversary can manipulate or observe portions of an exchange, including certain secret materials, the damage is limited with each turn of the double ratchet.
The double-ratchet algorithm is a soup of cryptographic components, but one of the most computationally expensive portions is the “Diffie-Hellman (DH) key exchange”, using Elliptic Curve Diffie-Hellman (ECDH) with Curve25519. How expensive? This post from 2020 claims a speed record of 3.2 million cycles on a Cortex-M0 for just one of the core mathematical operations: fairly hefty. A benchmark of the x25519-dalek Rust crate on a 100 MHz RV32-IMAC implementation clocks in at 100ms per DH key exchange, of which several are involved in a double-ratchet. Thus, any chat client implementation on a small embedded CPU would suffer from significant UI lag.
There are a few strategies to rectify this, ranging from adding a second CPU core to off-load the crypto, to making a full-custom hardware accelerator. Adding a second RISC-V CPU core is expedient, but it wouldn’t do much to force me to understand what I was doing as far as the crypto goes; and there’s already a strong contingent of folks working on multi-core RISC-V on FPGA implementations. The last time I implemented a crypto algorithm was for RSA on a low-end STM32 back in the mid 2000’s. I really enjoyed getting into the guts of the algorithm and stretching my understanding of the underlying mathematical primitives. So, I decided to indulge my urge to tinker, and make a custom hardware accelerator for Curve25519 using Litex/Migen and Rust bindings.
In this project I added a Raspberry PI Zero to the insides of the laptop. Both are connected via a serial link and can exchange data via it. You could use this for several applications:
Using the 286 with a terminal emulator as an interface to the Linux of the Raspberry PI. This way you can do the typical Linux shell stuff on a retro machine. With this you are quite far up on the hipster level
Connecting the DOS on the 286 to the Internet
Transferring files to the DOS filesystem
It’s been over a year since the original PinePhone, also known as the “Braveheart” edition was made available. When I reviewed it, it showed a lot of promise, despite being intended for developers. While the software has been incredibly improved since then, it failed to replace my Android phone.
The problem revealed itself when I tried to sort out why I couldn’t use a USB hub with the device. I tried every one in the house, and then even a few more, and none worked. More research landed me on the PinePhone Wiki, where I found a page listing various hardware issues discovered in the Braveheart.
A possible fix was to remove several tiny components on the board to correct the USB issue. This, however, would only fix one of several problems I was having. The worst of which was it didn’t have enough memory. The newer Community Edition PinePhones have 3GB of memory in addition to other hardware fixes.
Instead of buying a new PinePhone outright, I decided instead to do something I never attempted before:
Replace a phone’s mainboard.
I became interested in high precision GPS time after listening to a podcast about network clock synchronization on Signals & Threads. My original goal was to setup a local NTP time server that I could sync all my devices to. However, I got sidetracked along the way – and this is the story of my Raspberry Pi home dashboard.
The Apple M1 available in the MacBook Air, MacBook Pro 13”, and Mac Mini has been the focus of a ton of benchmarking writeups and blog posts about the new chip. The performance overall, and especially performance/watt, that Apple has achieved with the chip is very impressive. As a ray tracing person, what caught my eye the most was the performance AnandTech reported in their CineBench benchmarks. These scores were 1.6x higher than I got on my old Haswell desktop and 2x higher than my new Tiger Lake laptop! I had also been interested in trying out the new ray tracing API for Metal that was announced at WWDC this year, which bears some resemblance to the DirectX, Vulkan, and OptiX GPU ray tracing APIs. So, I decided to pick up a Mac Mini to do some testing on my own interactive path tracing project, ChameleonRT, and to get it running on the new Metal ray tracing API. In this post, we’ll take a look at the new Metal ray tracing API to see how it lines up with DirectX, Vulkan, OptiX and Embree, then we’ll make some fair (and some extremely unfair) ray tracing performance comparisons against the M1.
Given the scarcity of combo organ top octave generator ICs, what’s a hack supposed to do? Emulate!
I posed a “bar bet” against myself — can I emulate a top octave generator chip with an Arduino? The Arduino is a bit slow and I wasn’t sure if it would be fast enough for the task. Good thing I didn’t best against it…
If you browse the Web, you’ll find other solutions. I chose Arduino UNO out of laziness — the IDE is already set-up on my PC and the hardware and software are easy to use. Plus, I have UNOs to spare. Ultimately, one can always cobble together a barebones solution consisting of an ATMEGA328P, a 16MHz crystal and a few discrete components, if small size is an issue.
There is nothing I find more liberating than to spend a Saturday afternoon coding on some toy project.
There is no expectation or obligation to ever become more. It is just for fun, learning, and curiousity. I can add whatever features I want. I can use whatever technologies I want. I can throw it all away if I want. These are the projects I yearn for and look forward to when I’m busy with work.
Perhaps George Bernard Shaw was on to something: “We don’t stop playing because we grow old; we grow old because we stop playing.”
Funny enough, Titus Barik published a paper that contributes a qualitative analysis on the sentiment of programming and play on Hacker News. The themes he found include play as artistry, catalyst, fun, playgrounds, spontaneity, tinkering, and anti-work. There is a quote that I particularly like, “The joy of programming for programming’s sake is something you do in your own time.”