Hack-the-Planet Podcast Episode 33: Shit in, Shit out!

Nach über einem Jahr haben wir uns wieder zusammengefunden und aufgezeichnet. Aber hört selbst:

Links:

Finally arrived in VR – Virtual Reality in late 2022

I have really waited this out. Some “galaxy-sized brains” tell us for decades now that virtual reality is the next big thing. And it might as well have been.

Almost nobody (me included) cared to even try – and with good reason: There’s no way to transport the experience that virtual reality creates in an easy way. Language and “flat-screen-video” is not enough. Even any 3D video is not going to come even close to deliver.

And I knew this was the case. Apart from a 30-second rollercoaster ride years ago I never had any direct contact with virtual reality technology until late this year 2022.

I did of course read about the technology behind all this. About the rendering techniques and the display – sensor – battery – processing hardware. I had read about the requirements for many-frames-per-second to have a believable and enjoyable experience. Would the hardware not be fit for the job the papers said: You will feel sick, very fast.

So I hesitated for years to purchase anything related to this. I wanted to “wait it out” as I had calculated the average spending required for a good set of hardware and software would easily roam into 2k-5k euro territory.

This year the time had come: the prices where down significantly for all components needed. Even better: There where some new hardware releases that tried to compete with existing offerings.

Of course the obvious thing to do would have been to purchase either a Valve Index or some Oculus,eh, Meta VR headsets. But that would have easily blown any budget and actually none of these is technologically interesting in End-2022.

My list of requirements was like this:

  • lightweight and comfortable to wear
  • inside-out tracking (see: Pose Tracking)
  • CPU+GPU inside – the headset needs to be able to work stand-alone for video playback and gameplay
  • battery for at least 1-2 hour wireless play
  • touch+press controllers
  • capable of being used as SteamVR / PCVR headset – wireless and wired
  • Pancake lenses (as in “no fresnel”)
  • do-not-break-bank price

And what can I say. There was at least one VR headset released in december 2022 that fit my requirements: PicoXRs PICO 4 headset.

Pico 4 VR headset

So I went ahead and purchased one – which was delivered promptly. It came with charger, USB-C cable, two controllers and the headset itself. The case I got in addition to carry it around and safely store it when not in use.

At first I tried only applications and games that can be run directly on the headset. Of course some video streaming from YouTube and the likes. There is VR/180/360 content readily available with a huge caveat: I quickly learned that even 8K video is not enough pixels when it’s supposed to fill 360 degress around you. 8K video is rather the minimum that starts to look good.

Then there’s formats of videos. Oh god there are formats. I’d probably spend another blog article just on video formats for VR and 180 or 360 degree formats. Keep in mind that you can add 3D to the equation as well. And if you want decent picture quality you see yourself easily pushing 60 frames of 8K (or more) times 2 (eyes) through to the GPU of the little head mounted displays. The displays can do 2160×2160 per eye. So you can imagine how much video you should be pushing until the displays are at their potential. And then think: 2160 per eye is NOT yet a pixel-density that you would not be able to see pixels sometimes. I do not see a screen-door-effect and the displays are really really good. But more pixels is…well more.

Anyways: There’s plenty of storage on the device itself so on the next airplane trip I can look funny with the headset on and being immersed in a movie…

Or a remote desktop session:

After about a week of testing and playing (Red Matter 1 for example…) I was convinced that I’d like the technology and the experiences it offered.

The conclusion after the first week was as good as I could have hoped with the first 500 euro investment done: I would not get sick moving around in VR. I would enjoy the things offered. I was convinced that I was able to experience things otherwise not possible.

And I was convinced that I could not have come to any conclusion when not actually having owned such a headset and tried myself. It’s just not possible to describe to you what the feeling of being able to walk into a 3-dimensional world that gets rendered by a computer and fools your brain so well. Of course it’s NOT reality. That’s not the point. I do not feel like going to the holo-deck. But it feels like computer games become “3D touchable”. In virtual reality games there is a lot more going on than in non-VR games. And that’s the main reason that there are not more good VR games. It’s hard to build an immersive, believable game world. It’s real effort and I named Red Matter specifically because it was one of the most immersive and approachable puzzle, non-stressing games I have played.

you can adjust your IPD (Inter Pupillary Distance) electronically within the UI

Being convinced brought up the question: Now what?

Until this point there was no computer in our household that could even dream of powering a modern virtual reality PCVR experience. But there was one Windows PC which I could use to do the due dilligence for “what to buy” and if it at all would work as I wanted.

What did I want?

  • a set-up that would allow me to play any modern PC VR game
  • play the games with at least high details and with framerates and resolutions that would not make me sick
  • no wired connection to the computer necessary
  • ideally the computer would not even be in the same room or floor

So I had to do some testing first to figure out if the most basic requirements would work. So I purchased “Virtual Desktop” on the headset built-in store and installed the streamer app on the one Windows PC in the household that had a very old dedicated GPU.

I did the immediate extreme test. The computer connected to the wired network in the house. The headset connected to the house wifi shared with 80+ other devices. And it worked. It worked beautifully. Just out of the box with my mediocre computer I had the desktop screen of the computer floating in front of me. I was able to launch applications and I was even able to run simple 3D VR applications like Google Earth VR. I literally only had Steam and Virtual Desktop installed, clicked around and got the earth in front and below me in no time.

Apparently the headset was smart enough to connect to the 5ghz Wifi offered in addition to the crowded 2.4ghz. Latencies, bandwidth all in good shape.

To make things just a bit more forseeable I’ve dedicated a mobile access point to the headset. My usual travel access point (GLinet OPAL) apparently works quite well for this purpose.

It’s connected to the house wired network and creates an access point just for the headset. The headset then has reliable 500+ Mbit/s access to any computer in the household.

After some more playing around and simulating some edge case scenarios I came to the conclusion that his would work. I would not even have to touch a computer to do all this. It could all be done remotely over a fast-enough network connection.

After consulting with my knowledgable brother-in-law I then settled for a budget and had a computer built for the purpose of VR game streaming. After about 2k Euros and 2 weeks of waiting I received the rig and did the most reasonable thing: Put it in the server room in the house basement where it’s cool and most importantly far enough away from my ears.

Ryzen 5800x + 3070ti

So this one is closed up and sitting in the server room. The only thing other than power and ethernet that is plugged into the machine is an HDMI display emulator dongle:

The purpose of this HDMI plug without anything connected to it is to tell the graphics card that there’s display connected. It even tells the graphics card about all those funky resolutions that ghostly display can do… When there’s nothing connected to the HDMI ports the only resolutions that you can work with out-of-the-box are the default resolutions up to 1080p. This device enables you to go beyond 2160p.

I did a bit of setting-up for wake-on-lan and some additional fall-back remote desktop services in case something fails.

To wake-up the machine it’s sufficient to send the “magic packet” – either through the remote play client built-in features (Moonlight can do it…) or through the house-internal dashboard:

yes, the computer is called “Valerian” – the machine I am mostly using to control it (other than the headset) is called “Laureline”…go figure!

streaming games

For VR game streaming it’s as I had tested beforehand: Steam + Virtual Desktop doing their thing. Works, as expected, very pleasently even with high/ultra details set.

The machine can also be used to play normal non-VR games. For this I am using the open source Sunshine (server) / Moonlight (client) combination with great success.

I can either just open up the Moonlight app on my iPad, iPhone, RaspberryPi or Mac computer and connect to the computer in the basement and use it with 60-120fps 1080p to 4k resolutions without even noticing that there is no computer under the desk…

Oh – I do notice that there’s no computer under the desk because of the absence of any noise while using it.

What I have found is really astonishing for me – as I was not expecting a that well integrated and working solution without having to solve problems ahead.

Virtual Reality games are just working. It’s like installing, starting, works. The biggest issue I had run into was the controllers not being correctly mapped for the game – easily solvable by remapping.

I “upped” the stakes a bit a couple of days ago when I installed OBS Studio to live stream my VR session of playing Red Matter 2 (the sequel…).

resized screenshot of one eye of an impressive scene of the game Red Matter 2. Just having landed on the Neptune moon Triton.

After installing OBS and setting up the “capture this screen” scene it was very nice to see that not only did OBS record the right displays (when set right) but out of the box it recorded the correct audio AND the correct microphone. Remember: I am playing in a specific room at the top floor of my house. Using the awesome tracking of the head-set for room-scale VR to the fullest.

The computer in the basement means that the only connection from headset to the computer is through Virtual Desktop – 5ghz WiFi – Ethernet – Virtual Desktop Streamer.

I did not expect a microphone to be there but it is. I did not expect the microphone to work well. But it does. I did not expect the microphone being seamlessly forwarded to the computer in the basement and then OBS effortlessly picking it up correctly as a separate microphone for the twitch streaming. I was astounded. It-just-worked.

adding an (usb) gamepad

After a bit of fooling around, especially with standard PC games I found that some games make me miss a game pad. It was out of the question to connect a gamepad directly to the computer the games ran on – that one was in the basement and no USB cable long enough.

I remembered playing with USB-over-IP in recent years just for fun but also remembered not getting it to work properly ever. After investigating any hardware options I decided to give software another look.

Apparently a company called “VirtualHere” had seen their chance since I played around the last time. They offer a server and client software that seemingly can run anywhere.

So I picked an old RaspberryPi 1 out of the drawer and flashed a fresh version of RaspberryPi OS. Booted it up and copied the one Linux ARM7 binary over that VirtualHere offers. It started without issues and further dependencies.

On the Windows Machine you also only have to run a simple application and it’ll scan the network for “VirtualHere USB hubs”.

For me it immediately showed up the RaspberryPi as an USB hub. I plugged in my old Xbox 360 wireless receiver and it showed up and connected on Windows. When I then powered up an Xbox 360 wireless controller it made the well known Windows “device plugged in” sound and I had a working gamepad ready to use in Windows – all over the network.

I cannot notice any added latency for the controller. And essentially anything I had plugged into the USB ports of the RaspberryPi could immediately be used/mounted on the computer in the basement all over the already existing network.

It cannot be overstated how little hassle this solution was over any other way I know and would have tried. The open source USB/IP project is still there and seems to work on modern Windows BUT you have to deal with driver signing and security issues yourself.

VirtualHere does cost money but it’s at least not a subscription but a perpetual license you can purchase after trying out the fully functional 1-device versions. For me it now brings working USB-over-my-existing-network to any device I want around the house. There are some other uses I will look into – like that flatbed scanner I have. That camera that can now connect anywhere via USB… so many options…

conclusion

I went head-first into the virtual reality rabbit hole and it’s quite fun so far. The costs of this came down far enough and I was able to learn a lot of things I would otherwise not have been able to. Looking into the technology-side of how all this comes together and how latencies add up, build or ruin an experience is remarkable.

If you want to get a (albeit clumsy and not 3D) look of what one of the many options to do in VR is – take a look at a VR session recording from two days ago:

Bonus: The GLinet OPAL travel router does have 1 USB port. And you can run the USB VirtualHere hub software as an MIPSEL binary on there and you would not need the RaspberryPi anymore. The only thing you must figure out yourself is how to route the traffic out the right ports.

A keyboard and touchpad for the iPad Pro

With the release of the M1 iPad Pro I had decided to order one to replace my aging iPad mini 4 from 2015.

And so far I am very happy with it. I‘ve got it with the Apple Smart Folio which comes with this strange material that seems to collect dust like crazy. At least it seems to do it‘s job to protect the device.

The Smart Folio allows you to prop up the iPad either fully up or lay it down onto a table at an angle,

Embedded into the smart folio are magnets on both sides. It even depends solely on magnetic force to attach to the iPad Pro.

Now I‘am regularly typing and using a mouse with iPad OS. Which works great with the normal bluetooth keyboard and mouse from Logitech that I had around still. But those desktop peripherals are quite heavy and big devices compared to what you would want with such a mobile device like the iPad Pro.

There are multiple options that replace the Smart Folio with keyboard and touchpad combos. From Apple, from Logitech and of course the usual suspects from China. Those combos all have different downsides for me. For example:

  • Apple Magic Keyboard
    • enormous price
    • No F-keys
    • Heavy
  • Logitech Folio Touch
    • does not attach magnetically but puts the iPad into a bumper frame
    • As thick as it gets
    • Kind-of pricey for keyboard and touchpad

Both of the above options require the iPad Pro to be always connected to the case/keyboard. This limits the angles and the distance I can put the iPad to use it. It limits how I can use the keyboard and in what positions I can type. Both of them also connect directly to the iPad Pro through the back-connectors to be powered and data-transfer.

None of this is a good thing for me. I want a keyboard+touchpad that I can basically put at whatever distance I want in front of the screen and put the screen anywhere I need to be able to work comfortably. Everything being too tightly integrated and requiring to be always wired up to even work is a big downside for me.

So I started to look around and quickly found lots of options of keyboard/touchpad combinations that are self-powered and actually also already available for years.

With some research I settled to purchase one that ticked all boxes for me:

  • The haptic feeling when typing should be bearable, ideally it should be like a good notebook keyboard
  • The touchpad should support multi-touch gestures and work well with iPad OS – that is a really hard thing to achieve – it seems
  • Bluetooth 5.0 connection that does not interfere with WiFi
  • very light, yet has to have enough battery for hours of use
  • Needs to attach somehow to the iPad case while not in use yet needs to be detached physically from the iPad while in use
  • Needs to support all normal keys you would need on Linux console or while programming, including the F-keys.
  • cheap?

This is how it looks like while in use:

As you can see it‘s not actually attached to the iPad but just there ready to be used.It‘s a fair size – remember: this is an 12.9 inch iPad next to it.

All the above checkboxes are ticked as the the keyboard feels well while typing. It has F-keys and even offers switchable layouts for different use-cases. All my programming and console needs are fulfilled.

It’s insanely light – feels almost too light. But the backside is thin metal which is magnetic. And yes. It just attaches to the outside of the original Apple Smart Folio that I already had. It literally just snaps onto it and stays there while being moved from one place to the other.

With the flexibility of the original Smart Folio I can now put the iPad onto the couch table and sit comfortably on the couch while typing and using the touchpad with the stable small keyboard on my lap.

Since it comes with it‘s own battery (I have it for 1 week and I was unable to empty it) its a bonus that charging takes place through a USB-C port. Most other cheap keyboard/touchpad combinations come with a Micro-USB port for charging. Even in 2021.

I could not resist to open it right up. There are 8 screws at the bottom that can easily be opened.

Look how easy it will be to replace the battery one day. This is a basic off-the-shelve battery pack that is cheap to replace when faulty.

Now while I can recommend this keyboard for the iPad Pro I cannot tell you where you can get it. I‘ve ordered mine on Amazon but while I was writing this article I was unable to find and link the product page. It got removed apparently.

So my only recommendation would be: Go for a hunt for keyboards with similar options. Mine also has key backlights with different colors – which nobody needs for any reason. But if you go for the hunt. Look out for keyboard touchpad combinations that offer Bluetooth 5.0 and USB-C for charging. Compare the pictures as the keyboard layout was quite unique (T-cursor keys, F-keys,…) .

Reading out non-smart (water/gas/…) meters

The only meter in our house that I was not yet able to read out automatically was the water meter.

With the help of a great open source project by the name of AI-on-the-edge and an ESP32-Camera Module it is quite simple to regularly take a picture of the meter, convert it into a digital read-out and send it away through MQTT.

The process is quite simple and straightforward.

  1. Flash the ready made Firmware image to the module
  2. Configure the WiFi using a SD card
  3. Put the module directly over the meter
  4. Connect to it and setup the reference points and the meter recognition marks

As you can see above all the recognition is done on the ESP32 module with its 4MByte of RAM.

With the data sent through MQTT it’s easy to draw nice graphs:

my 4 layer corne split keyboard layout (germany)

I’ve been using my corne split keyboard for about 3 weeks now and during that time I’ve made a couple of changes to the layout.

Right now I am quite happy with the content I am typing these days but I guess over time I am still going to optimize further.

Nevertheless I want to document my layout here, in a picture and with the json file that can be used with the QMK configurator.

building a corne split keyboard

It’s been a while since during a Hack-the-Planet episode I was gifted two PCBs of a corne keyboard by PH_0x17 of Nerdbude and ClickClackHack fame.

Since a picture says more than a thousand words, I give you the result first:

my crkbd based keyboard

This keyboard design is made from the ground up as open source and naturally is fully available as a GIT repository containing everything you need to start: PCB schematics, drawing, documentation and firmware source code.

It took me a couple of months to get all the required parts ordered and delivered. Many small envelopes with parts that seemlingly are only produced by a handful of manufacturers. But anyways: After everything had arrived and was checked for completeness my wife took the hardware parts into her hands and started soldering and assembling the keyboard.

And so this project naturally is split up between my wife and me in the most natural (to us) way: My wife did all the hardware parts – whilst I did the software and interfacing portion. (Admittedly there only was to be figured out how to get the firmware compiled and altered to my specific needs)

Hardware

So make the jump over to the blog of my wife and enjoy the hardware portion over there. Come back for the software portion. I will only leave some pictures of the process here:

Software

After putting the hardware together it was time to get the firmware sorted as well. This keyboard design is based upon the open source QMK (Quantum Mechanical Keyboard) firmware.

Conveniently QMK comes with it’s own build tools – so you will be up and running in no time. Since I had purchased Arduino ProMicro controllers I was good with the most basic setup you can imagine. As the base requirements for the toolchain where minimal I went with the machine that I had in front of me – a Raspberry Pi 4 with the standard Raspberry Pi OS.

These where the steps to get going:

  • get Python 3 and the qmk tool installed – I’ve chosen not to use the tool setup procedure but instead go with a separate clone of the QMK firmware repository.
python3 -m pip install --user qmk
  • clone the QMK firmware repository and get the QMK tool running (in the /bin folder of the firmware repository – it’s actually just a python script)
git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
git submodule sync --recursive
git submodule update --init --recursive --progress
make crkbd:default
  • create your own keymap to work with. You gotta use the crkbd firmware options as a default for this keyboard. The command below will generate a subfolder with the name of your keymap in the keyboards/crkbd/keymaps folder with the default settings of the crkbd keyboard firmware.
qmk new-keymap -kb crkbd
  • build your first firmware by running the command below (note: btk-corne is the name of my keymap)
qmk compile --clean -kb crkbd/rev1/legacy -km btk-corne
success! The first firmware is compiled
  • now you can flash the firmware to both ProMicro controllers. The most straight forward way for me was using avrdude on the commandline. In my case the device is added as /dev/ttyACM0 and the compiled firmware named crkbd_rev1_legacy_btk-corne.hex.

    When you got all this information you need to plug in the ProMicro and trigger a reset by bridging Ground and the Reset Pin. If you added, like we did, a button for reset you can use this. After hitting reset the ProMicro bootloader will enter the state where it’s possible to be flashed. Reset it and THEN run the avrdude commandline.

    The full commandline is:
avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109  -e -U flash:w:crkbd_rev1_legacy_btk-corne.hex
  • (alternatively) you can also use QMK Toolbox to flash the firmware. Also works.

So now you know how to get the firmware compiled and running (if not, look here further). But most probably you are not happy with some aspects of your keymap or firmware.

By now you might ask yourself: Hey, I’ve got two ProMicros on one keyboard. Both are flashed with the same firmware. Into which of the two do I plug in the USB cable that then is plugged into the computer?

The answer is: by default QMK assumes that you are plugging into the left half of the keyboard making the left half the master. If you prefer to use the right half you can change this behaviour in the config.h file in the firmware:

You have to plug in both of them anyway at times when you want to flash a new firmware to them as you adjust and make changes to your keymap.

Thankfully QMK comes with loads of options and even a very useful configurator tool. I used this tool to adjust the keymap to my requirements. The process there is straightforward again. Open up the configurator and select the correct keyboard type. In my case that is crkbd/legacy. The basic difference between legacy and common is a different communication protocol between the two halves. This really only is important when features are used that require some sort of sync between the two haves – like some RGB LED effects. Since I did not add any LEDs to the build I go with legacy for now. Maybe I need some features later that require me to go with common.

The configurator allows you to set up the whole keymap and upload/download it as a .json file.

That .json file can easily be converted into the C code that you need to alter in the actual keymap.c file. Assuming that the .json file you got is named btk-corne.json the full commandline is:

qmk json2c btk-corne.json

Then simply take this output and replace the stuff in the keymap.c with it:

Now you compile and flash again. And if all went right you’ve got the new keymap and firmware on your keyboard and it’ll work just like that :)

a self-built Bubble Bobble bartop arcade machine

I like playing arcade games. I’ve had an “arcade” in my home town and I used to go there after school quite frequently. It was a small place – maybe 5 machines and some pinball machines.

In february this year it occured to be that with the power of the Raspberry Pi and a distribution called RetroPie I could build something that would bring back the games and allow me to play/try those games I never could because my arcade was so small back in the days.

To get a better idea of how to approach this I started to search around and found the build-log of Holbrook Tech where they’ve built a “Bigger Bartop Arcade”.

With their basic plans I started drawing in Inkscape and told my father about the plan. He was immediately in – as the plan now was to not build one but two bartop arcade machines. He would take the task of carrying out the wood works and I would do the rest – procurements, electronics, wiring, design and “painting”.

first drawings of the side panels

While I took the Holbrook Tech schematics as a base it quickly came apparent that I had to build/measure around the one fixed big thing in the middle: the screen.

screen

I wanted something decently sized that the RaspberryPi would be able to push out to and that would require no maintenance/further actions when installed.

To find something that fits I had my requirements fixed:

  • between 24″ – 32″
  • colour shift free wide viewing angle
  • 1080p
  • takes audio over HDMI and is able to push it out through headphone jack

I eventually settled for a BenQ GW2780 27″ monitor with all boxes ticked for a reasonable price.

After the monitor arrived I carried it to my fathers house and we started to cut the bezel as a first try.

measuring the monitor in – on a piece of wood for testing.

After some testing with plywood we went for MDF as it was proposed by others on the internet as well. This made the cutting so much easier.

woodwork

We went with standard 2cm MDF sheets and my father cut them to size with the measurements derived from the monitor bezel centerpiece.

Big thanks to my father for cutting so much wood so diligently! The next days he sent me pictures of what he’d made:

the plywood bezel was replaced with the MDF version
Each sheet of MDF wood got a steel screw thread insert. The screw is going on the inside through another peice of wood which is screwed and glued directly to the insides. This holds everything firm and is invisible from the outsides.
The only screws visible from the outside are holding the back panel on. Because you need to be able to remove the back panel they can be removed. Also the back panel is plit into two parts because that gave more structural strength and helps with the power input mounting later.
I went for Joystick + 6-Button layout for the control panel. I’ve changed the measurements a bit over the ones I’ve found on the internet to my taste.
The above schematics show the actual measured holes as they were drilled. As everything went more or less “free-hand” it’s quite astonishing to me how accurate it went. This measurement schematic was later used to laser cut the acrylic handrest.

The side panels got a cut around for the black T-Molding to be added later.

electronics and wiring

After about 2 weeks my father had built the first arcade out of sheets of MDF and I had taken delivery of the remaining pieces of hardware I had ordered after making a long list.

The most interesting parts of the above list might be the 2-player joystick + buttons + encoder set.

It contains 2 standard 4/8-way switchable arcade joysticks, 10 buttons, all microswitches required and the Ultimarc I-PAC-2 joystick encoder.

You connect every microswitch to this board and it will translate all button presses/joystick movements into keyboard or joystick movements. You connect it through USB to the RaspberryPi and it either shows up as 2 gamepads or one keyboard. Also a nice configuration app is available from the manufacturer.

So when I got the first arcade from my father I started to put in the electonics immediately.

The wiring to the I-PAC was straight forward. Worked at the first try.

The sound was a bit more complicated. I wanted a volume control knob on the outside but also did not want to disassemble any audio amplifier.

I went with the simplest solution: A 500k Ohm dual potentiometer soldered into the headphone extension cable going to the amplifier. The potentiometer then got put into a pot and a whole made it stick out so that a knob could be attached.

The RaspberryPi set-up then only lacked cooling. The plan was to put a 120mm case fan to pull in air from the bottom and went it out another 120mm case hole at the upper back. Additionally the RaspberryPi would get it’s own small 30mm fan on top of it’s heatsink case.

I attached both fans directly to the RaspberryPi – so I saved myself another power supply.

software

Now I had to make it all work together. As I wanted to use RetroPie in the newest 4.6 release I’ve set that up and hooked it all up.

On first start-up EmulationStation asked me to configure the inputs. It had detected 2 gamepads as I had put the IPAC-2 into gamepad mode before. You can do this with a simple mode-switch key-combination that you need to hold for 10 seconds to make it switch.

The configuration of the buttons of the two players went without any issue. First I had set-up the player 1 input. Then I re-ran the input configuration again for player 2 inputs.

The controls where straight forward. I wanted mainly 4-way games but with enough buttons to switch to some beat-em-ups at will.

So I configured a simple layout into Retroarch with some additional hotkeys added:

vinyl design

I tossed around several design ideas I had. Obviously derived from those games I wanted to play and looked forward to.

There was some Metal Slug or some Cave shooter related designs I thought of. But then my wife had the best ideas of them all: Bubble Bobble!

So I went and looked for inspiration on Bubble Bobble and found some but none that sticked.

There was one a good inspiration. And I went to design based upon this one – just with a more intense purple color scheme.

I used Inkscape to pull in bitmap graphics from Bubble Bobble and to vectorize them one by one, eventually ending up with a lot of layers of nice scalable vector graphics.

With all design set I went and sliced it up and found a company that would print my design on vinyl.

With the final arcade-wood accessible top me I could take actual measurements and add to each element 4cm of margin. This way putting it on would hopefully be easier (it was!).

Originally I wanted to have it printed on a 4m by 1,2m sheet of vinyl. It all would have fit there.

But I had to find out that Inkscape was not capable of exporting pixel data at this size and a pixel-density of 600dpi. It just was too large for it to output.

So I had to eventually cut all down into 5 pieces of 1,2m by 80cm each.

After about 7 days all arrived printed on vinyl at my house. I immediately laid everything out and tried if it would fit. It did!

Now everything had to go onto the wood. I did a test run before ordering to check if it would stick securely to the wood. It did stick very nicely. So putting it on was some intense fiddling but it eventually worked out really really great.

You can see the inside here and the structural struts where everything attaches to screwed in from the insides.

Now it was time for some acrylic. I wanted to get a good bezel and covering of the monitor as well as the handrest and the front buttons.

Cutting acrylic myself was out of questions – so I went with a local company that would laser-cut acrylic for me to my specification.

I’ve sent them the schematics and measurements and the panels for reference and 4 days later the acrylic arrived. We could then put the last bits together for completion!

Result

I am really happy how this turned out – especially since with everything that required actual work with hands I am a hopeless case. With this somehow everything worked out.

I still employ the idea of a vertical shoot-em-up centered version… but maybe some day.

If you got any questions or feedback let me know!

So, we’re building something

For some weeks now I am working on the design of something that is being built within the next couple of weeks out of wood and metal (and electronics).

It’s hopefully going to be as nice as I dream it up… What could it be?

I did this design based upon some pixel-material and pictures I’ve gathered around the internets – and took a lot of inspiration from them.

Although I had to create everything in vectors from those small pixel templates… But now everything above is going to be printed on vinyl in glorious vectors – no pixeljunk.

Apple Watch repair attempt

After years of use the display of my trusty Apple Watch popped off. It seems the glue had given in and failed.

As there was nothing wrong with the watch otherwise I am attempting a repair.

I’ve got the new adhesive seal, a new force touch sensor and a new battery while I am at it.

Add opening and disassembling was an adventure in itself I had to give up for now as I am missing an exotic Y000 screwdriver.

While I wait for this to arrive – here is the screw I had to stop at:

multi-Protocol to MQTT tool

When you are dealing with IoT protocols, especially at hobby-level, you probably came across the MQTT protocol and the challenge to have all those different devices that are supposed to be connected actually get connected – preferably using the MQTT protocol.

Recently this little project came to my attention:

OpenMQTTGateway project goal is to concentrate in one gateway different technologies, decreasing by the way the number of proprietary gateways needed, and hiding the different technologies singularity behind a simple & wide spread communication protocol: MQTT.

OpenMQTTGateway

OpenMQTTGateway support very mature technologies like basic 433mhz/315mhz protocols & infrared (IR) so as to make your old dumb devices “smart” and avoid you to throw then away. These devices have also the advantages of having a lower cost compared to Zwave or more sophisticated protocols. OMG support also up to date technologies like Bluetooth Low Energy (BLE) or LORA.

Of course, there is a compatible device list…

bootable disks and raw disk copies

Every once in a while I need to take an image or duplicate an SSD/SDCard/Harddisk. And it’s gotten quite complicated to get the proper formatting and alignment when you want to achieve certain things.

For example creating a EFI compatible bootable USB stick is not as straight forward as one would think.

In those cases, a tool called rufus helps:

For all other cases I am using the HDDGuru tool on Windows.

HDD Raw Copy Tool is a utility for low-level, sector-by-sector hard disk duplication and image creation.

  • Supported interfaces: S-ATA (SATA), IDE (E-IDE), SCSI, SAS, USB, FIREWIRE.
  • Big drives (LBA-48) are supported.
  • Supported HDD/SSD Manufacturers: Intel, OCZ, Samsung, Kingston, Maxtor, Hitachi, Seagate, Samsung, Toshiba, Fujitsu, IBM, Quantum, Western Digital, and almost any other not listed here.
  • The program also supports low-level duplication of FLASH cards (SD/MMC, MemoryStick, CompactFlash, SmartMedia, XD) using a card-reader.

HDD Raw Copy tool makes an exact duplicate of a SATA, IDE, SAS, SCSI or SSD hard disk drive. Will also work with any USB and FIREWIRE external drive enclosures as well as SD, MMC, MemoryStick and CompactFlash media.

TubeTime and BitSavers

I was pointing to BitSavers before. And I will do it again as it’s a never ending source of joy.

Now some old schematics had been spilled into my feeds that show how logic gates had been implemented with transformers only.

BitSaver brought it up:

And not only BitSaver is on this path of sharing knowledge, also TubeTime is such a nice account to follow and read.

Linux mac80211 compatible full-stack Wi-Fi design based on SDR

In a tweet we were given an early christmas present – open-sdr released an open source software Wi-Fi stack that utilizes software-defined-radio technology to implement actual working Wi-Fi.

Features:

  • 802.11a/g; 802.11n MCS 0~7; 20MHz
  • Mode tested: Ad-hoc; Station; AP
  • DCF (CSMA/CA) low MAC layer in FPGA
  • Configurable channel access priority parameters:
    • duration of RTS/CTS, CTS-to-self
    • SIFS/DIFS/xIFS/slot-time/CW/etc
  • Time slicing based on MAC address
  • Easy to change bandwidth and frequency:
    • 2MHz for 802.11ah in sub-GHz
    • 10MHz for 802.11p/vehicle in 5.9GHz
  • On roadmap: 802.11ax

See this demonstration:

TESLA PowerWall 2 Security Shenanigans

EXECUTIVE SUMMARY

  • GUI wide open.
  • Default password on WiFi and management interface
  • Attacker can cause financial damage to consumer
  • Attacker can dump entire PW Load into the grid at once
  • Attacker can oscilate between CHARGING and DUMPING (microseconds, the poor sub-station!)
  • Attacker can change grid codes.

More here. At least somebody looked into the security and attack potential of these things.

time/space synchronization symbols, AGC training preamble, Viterbi detection/equalization, LDPC decoding and MIMO

Of course this post is talking about hard disks. The ones with spinning disks and read/write heads flying very close to the spinning disks surface.

There are several links to the source papers and works discussing the findings – take look into this nice rabbit hole:

RaspberryPis to Access Points!

Current generations of RaspberryPi single board computers (from 3 up) already got WiFi on-board. Which is great and can be used, in combination with the internal ethernet or even additional network interfaces (USB) to create a nice wired/wireless router. This is what this RaspAP project is about:

This project was inspired by a blog post by SirLagz about using a web page rather than ssh to configure wifi and hostapd settings on the Raspberry Pi. I began by prettifying the UI by wrapping it in SB Admin 2, a Bootstrap based admin theme. Since then, the project has evolved to include greater control over many aspects of a networked RPi, better security, authentication, a Quick Installer, support for themes and more. RaspAP has been featured on sites such as InstructablesAdafruitRaspberry Pi Weekly and Awesome Raspberry Pi and implemented in countless projects.

also on Github: https://github.com/billz/raspap-webgui

This really is going to be very useful while on travels. I plan to replace my GL-INET router, which shows signs of age.

iPhone 11 Pro battery is…

…quite amazing.

I’ve upgraded just before the Japan travelling to the current iPhone generation. I was expecting some improved battery life but I did not dare to think I would get THIS.

I’ve taken the last 3 generations of iPhones on trips to Japan and they all went through the same exercises and quite comparable day schedules.

The amount of navigation, screen-time, taking pictures and just browsing the web / translating led to all 3 previous generations to be out-of-juice just around half-day.

Not this generation. Apparently something has changed. Not really in terms of screen time – screen on-time got better, but not as great as the overall usage time of the device with screen off.

In regards of how much power and runtime I am getting out of the device without having to reach for a batter pack or power supply is astonishing. I am using my Apple Watch for navigation clues so I am not really reaching out for the phone for that. But that means the phone is constantly used otherwise to make pictures, payments, translations….

I am comfortably leaving all battery packs and chargers at home when all the time before I was charging the phones at lunchtime for the first time. I usually had to charge 2 times a day to get through.

With this generations iPhone 11 Pro I am getting through the whole day and reach the hotel just before getting down to 20%.

I am still using it all throughout the day. But this is such a relief that I am confidently getting through a full day of fun. Thumbs up Apple!

the big list of RTL-SDR supported software

RTL-SDR is a very cheap ~$25 USB dongle that can be used as a computer based radio scanner for receiving live radio signals in your area (no internet required). Depending on the particular model it could receive frequencies from 500 kHz up to 1.75 GHz. Most software for the RTL-SDR is also community developed, and provided free of charge.

The origins of RTL-SDR stem from mass produced DVB-T TV tuner dongles that were based on the RTL2832U chipset. With the combined efforts of Antti Palosaari, Eric Fry and Osmocom (in particular Steve Markgraf) it was found that the raw I/Q data on the RTL2832U chipset could be accessed directly, which allowed the DVB-T TV tuner to be converted into a wideband software defined radio via a custom software driver developed by Steve Markgraf. If you’ve ever enjoyed the RTL-SDR project please consider donating to Osmocom via Open Collective as they are the ones who developed the drivers and brought RTL-SDR to life.

https://www.rtl-sdr.com/about-rtl-sdr/

And since the hardware is so affordable there’s lots of software and therefore things that can be done with it.

turn an Xbox 360 HD-DVD drive into an Fluorescent Scanning Thermal Microscope (FSTM)

Curtesy of Sam Zeloof I came around the fact that I’ve got a good part of a FSTM in a cupboard here.

Apparently my choice of purchasing the HD-DVD drive for the Xbox 360 will ultimately pay off!! As we all know Bluray won that format war back in the days.

But now it seems that this below would be useable for something:

Over the life of nuclear fuel, inhomogeneous structures develop, negatively impacting thermal properties. New fuels are under development, but require more accurate knowledge of how the properties change to model performance and determine safe operational conditions.

Measurement systems capable of small–scale, pointwise thermal property measurements and low cost are necessary to measure these properties and integrate into hot cells where electronics are likely to fail during fuel investigation. This project develops a cheaper, smaller, and easily replaceable Fluorescent Scanning Thermal Microscope (FSTM) using the blue laser and focusing circuitry from an Xbox HD-DVD player.

The Design, Construction, and Thermal Diffusivity Measurements of the Fluorescent Scanning Thermal Microscope (FSTM)

As mentioned, Sam Zeloof shows off the actual chip in more detail:

Xbox 360 HD DVD player photodiode chip reverse engineering, includes 49 bits of antifuse trimming from the factory

Odometer for the HUD

Since I am back at developing the Head-Up-Display app I was writing about in February (yeah, mornings got darker again!) I want to leave this nice looking Odometer Javascript library here:

Odometer is a Javascript and CSS library for smoothly transitioning numbers. See the demo page for some examples.

Odometer’s animations are handled entirely in CSS using transforms making them extremely performant, with automatic fallback on older browsers.

odometer

One Soundcard to rule them all

The first sound card I got as an upgrade to a PC without sound back in 90s was the glorious Sound Blaster 16:

There were several different sound card options back in the days and all sounded a bit different.

sound card (also known as an audio card) is an internal expansion card that provides input and output of audio signals to and from a computer under control of computer programs. The term sound card is also applied to external audio interfaces used for professional audio applications.

Wikipedia

With the synthesizers and audio processing each series and make produced a distinctive sound. Some of us want to bring these sounds back. But keeping the (old) hardware running is an increasingly difficult task.

For example: The interface used by the above mentioned Sound Blaster 16 card is the ISA bus interface. This interface was introduced in 1981 and replaced in 1993. If you want to hear how such a sound card sounds today you would have to run hardware from this time period.

But some people are working towards getting at least some authentic sound back.

In this talk, Alan Hightower takes a look at the complexities, challenges, and even current progress at integrating all of the above cores into one FPGA based ISA sound card.

This is what the concept would bring if done:

Oh that would be soooooo nice to have all these vintage sound interfaces available and to be able to actually use them for audio output.

more blacker

A month ago I wrote about a very black paint. This month brings me a papepr about an even blacker substance.

The synergistically incorporated CNT–metal hierarchical architectures offer record-high broadband optical absorption with excellent electrical and structural properties as well as industrial-scale producibility.

Paper: Breakdown of Native Oxide Enables Multifunctional, Free-Form Carbon Nanotube–Metal Hierarchical Architectures

Why the MS-DOS floppy disk cache was valid 2 seconds…

If you’re old enough to have used MS-DOS you know the benefits a read cache introduced back at the time for floppy disks. Without such a cache everything data intensive was magnitudes slower.

Now after all these years more and more stories emerge about how certain thresholds and timeings where set back in the days.

This is such a story:

Mark Zbikowski led the MS-DOS 2.0 project, and he sat down with a stopwatch while Aaron Reynolds and Chris Peters tried to swap floppy disks on an IBM PC as fast as they could.

They couldn’t do it under two seconds.

So the MS-DOS cache validity was set to two seconds. If two disk accesses occurred within two seconds of each other, the second one would assume that the cached values were still good.

Raymond Chen blog

There are more links in the original article – so go there and down that rabbit hole!

Multi-Sensor board progress

Still working on these

Still lots of errors and challenges to positioning and casing. It works electrically and in software. Does not yet fit into a case.

It’s supposed to get you these sensors accomodated:

  • barometric pressure
  • temperature
  • humidity
  • PIR motion
  • light intensity
  • bluetooth scan/BLE connectivity
  • Wifi scan / Wifi connectivity

And a RGB LED as output. All powered by USB and an ESP32.