Monday January 9 Meetup: Social House in Chantilly

So maybe you’re in Nova and have been craving one of these meetups, but maybe you’ve been busy, or maybe you’ve been battling your social anxiety, or maybe you’ve been having pressing issues at home, or maybe you’re wearing an ankle monitor.

Whoever you are, and whatever brings you to our meetup, you are invited, and welcome. We’ll be at Social House in Chantilly. Look for the group of tired, jaded tech folks, probably mostly dressed in black, and probably mostly drinking. Maybe I’ll bring some swag to reward anyone brave enough to join us.

There’s a Dairy Queen across the parking lot if that sways you. Official meetup time is 1830 eastern, but some show up earlier, and some show up later. Come out. You deserve this. We deserve each other.

My first DIY Eurorack thing

Having more than two enclosures full of Eurorack stuff can be challenging at times. I’ve rearranged several times trying to account for optimal patching convenience. But one of the issues is that I have the WMD Performance Mixer, and it’s rather large, so it simply can’t sit in the same enclosure as a lot of the things that need to patch into it.

So I started shopping for rack plumber modules (modules that extend a number of jacks over a small distance semi-permanently). I looked at a bunch, and none of them scratched the itch perfectly. I wanted a lot of jacks, and I didn’t want it to take up a lot of space. I noticed I couldn’t seem to find any 1U versions with high port density.

So I took the knowledge I’ve picked up over the last few years of designing PCBs with DC540, ran a couple of things by some more experienced folks, and designed my own 16-jack pair of 1U rack plumber modules (PulpLogic format, because that’s what I have). They take advantage of shielded ethernet patch cables to pipe two sets of eight signals via RJ45 to a matching unit elsewhere (for me, it’s another rack — for someone else, it might be to the far reaches of a much more complex permanent enclosure).

I can’t put them up for sale, because on a whim I added a poem about communication and signals, and that poem’s probably copyrighted. But the satisfaction of having an idea, putting it in KiCad, refining it, ordering parts, fixing fitment issues and then seeing it do its job in the rack is pretty priceless. (The RJ45 hole was just shy of a perfect fit, so I had to use a tungsten carbide grinding dremel bit to shave off a little bit of the edges so that it would nicely slip over the jacks.). It’s not fancy or complex (no power, no microcontroller, just signal paths), but it serves my particular utilitarian needs very well, and I’m pretty stoked about it. Also, I got five sets for what would effectively be the price of one set retail. And it has my face on it. LOL.

Update: Tested in rack, works GREAT!

Less than a week left to follow our YouTube for prizes

We’re giving away a couple of badges and a few other soldery trinkets for new year’s.

Enter by following our YouTube. We’ll choose at random on New Year’s Eve (hell, maybe even live!) from the email connected to your youtube follower account and notify you there.

Content is becoming more frequent. PCB design classes, modular synth explorations, and who knows what we’ll get into in 2023? Follow and stay tuned!

https://www.youtube.com/@dc5402

An Update on Serial Number 0123456789ABCDEF

So I managed to find a satisfactory and effective resolution to my problem with serial number 0123456789ABCDEF. If you recall, the problem is that certain consumer-grade USB devices ship with non-unique serial numbers, making it difficult to use them with USB pass-through under VirtualBox.

  • Serial number on multiple devices = 0123456789ABCDEF
  • VirtualBox USB filtering (permanently mapping a device to a specific VM) relies a unique field. With diverse devices, this can be the vendor/product ID. With normal devices with unique serial numbers, the serial number can be used in the filters.
  • With identical product, vendor and serial numbers, you’re stuck with “Port,” which at least in CentOS/Rocky’s USB subsystem, is dynamically assigned when the device is plugged in to the host. Example: Plug in a device, it shows up on Bus 001, Device 005. Unplug it, plug it back in, and it’s now on Bus 001, Device 006.
  • Allegedly, udev rules can be set to assign a specific port (or a port “nickname”) using some other unique identifier, like the actual physical port the device is connected to. Still less than ideal, since that would require adherence to a strict protocol of unplugging and plugging into the same port. Anyway, I couldn’t get that to work.

So I dug around a bit, and found that the devices DO have a unique component — the device’s MAC address. It’s visible when using lsusb in verbose mode. But VirtualBox can’t see it, and it’s not an option in the VirtualBox filtering.

So what I ended up doing was abandoning VirtualBox’s USB filtering entirely.

I created a text file mapping those MAC addresses to VMs. Then I created a script which iterates through LSUSB, and checks the MAC addresses of every USB device it finds through that mapping file. When it finds one, it needs two things to make the usb attachment happen via command line. It needs either the UUID or machine name of the VM, and it needs the UUID or “address” of the USB device. My mapping file stores the MAC address of the device (discovered via lsusb) and the UUID of the VM, which is available via vboxmanage list vms.

The UUID of the USB device can be found by comparing the Bus and Port values found in lsusb to the output of vboxmanage list usbhost. With creative use of bash and awk, I was able to iterate through the devices, determine which ones are assigned to VMs, check to see if they’re currently attached, and if not, issue the vboxmanage controlvm vm-uuid usbattach usb-uuid command to attach the device to its home VM. So in case of a host reboot or someone rejiggering ports, a single command is enough to get things back where they belong.

I realize that there are probably only three people on the planet who have run into this particular problem, but I thought the solution was an interesting exercise in information-gathering on a VirtualBox host on a Rocky Linux platform, so I felt i was worth sharing.

DC540 will be at Social House in Chantilly this evening

Find us around 1830. Should be lightly attended, so if your social anxiety balks at crowds, this evening might be the night for you. We’ll be celebrating last culmination of our nine-part series on MicroPython & PCB Design with the RPi Pico, and getting ready for the next installments, which enhance your artistic toolset with regard to PCB design. I recommend the Margherita flatbread and a Space Dust. Look for the Defcon hat. Strangers are welcome.

DC540 December Giveaway

We’re eight classes in on our MicroPython & PCB Design series, and I got the urge to give some stuff away to drive more eyeballs to our content. So from now until the end of December, I’m tracking new subscribers to our YouTube channel: https://www.youtube.com/channel/UCbN6uet3koyKkKs5W8CoCxQ

Five of you will win prizes:

(1) Tarot Badge from DC30
(1) Tree of Life Badge from DC29
(3) Random DIY PCB kits from our collection

Maybe you’ll even learn something!

Tonight: MicroPython & PCB Design Class: Catching Up

What better way to spend Black Friday evening than cozying up by the fire and tuning into DC540’s catch-up class on MicroPython & PCB Design. We’ve done 7 classes so far of a planned 6-class series, and last week we started in fabrication prep. Enough people are traveling this week that we decided not to take the class forward this evening, but enough people are around that we’re going to hold “class” anyway, and dig deep in whatever direction folks want to explore.

No promises about next week. I’m having minor ear surgery next Friday morning. We’ll see how it goes.

7:30pm on Zoom.