Re: how do your hotplugd(8) scripts look? mine is messy and needs cleaning.
izzy Meyer <[email protected]> Wed, 8 Jul 2026 10:59:19 -0500
| Newsgroups | gmane.os.openbsd.misc |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 10 Jun 2026 16:41:26 -0500 izzy Meyer <[email protected]> wrote: > Hello misc@ > > I have slowly been working on this now-sprawling hotplugd(8) attach > script but I'm not a fan of how messy and complex it has gotten. Any > tips to clean it up and make it more modular? I don't like the usbdevs > hack, it feels uncomfortable to me for some reason. How do your > hotplugd(8) scripts look? > Thanks for all your replies. I really appreciate the tips. I really don't want to have multiple different device management operations split about the system, mainly cos then all my device management stuff is all over the place. I have a crappy memory and I'm terrible at taking notes, so any form of consolidating similar logic helps me. So, branching some logic out to rc.local and similar is a non-option for me. About the webcam permissions. Yes. That is a bad idea. I want to explain my logic, but not defend it here: Me and my partner share this computer. My partner needs access to the webcam for telehealth and work appointments, and so do I. So, I quickly hacked together the non-optimal solution, chmod 777. It was a hack. I could hack XenoDM's GiveConsole here to dynamically assign ownership, but I found a simpler solution: putting my user and my partner's user in a new group: ~ $ cat /etc/group | grep webcam webcam:*:1003:izder456,dracian Then, doing this in my hotplug attach script so that group has access but nothing else does: chown -RL root:webcam /dev/video* chmod -RL 660 /dev/video* Note: the -L may or may not be needed, but I noticed /dev/video is a symlink to /dev/video0 on my machine so I figured I needed to account for that. Please correct me if this isn't needed. It feels wrong. I added that midithru change to the midi case as I run -current on this rig. It is a much better solution for what I need. I'd rather not run midicat as a daemon every time I hook up my keyboard. Seems overkill. Also- this new adjustment allows me to hotplug my keyboard even when a program like audio/lmms is consuming the midithru port. Before, with the midicat hack, I'd have to re-launch lmms every time I changed midi device. Big improvement. I also added logging to make the debugging a little easier. This is what I ended up with as my hotplugd(8) attach script: ~ $ cat /etc/hotplug/attach #!/bin/ksh DEVCLASS=$1 DEVNAME=$2 [ "$DEVCLASS" -eq 0 ] || exit 0 case "$DEVNAME" in ugen*) # printer for CUPS if usbdevs -v | grep -q '03f0:dd11'; then ugen=$(usbdevs -v | awk ' /03f0:dd11/ { found=1 } found && /driver: ugen[0-9]+/ { sub(/^[[:space:]]*driver: /, "") print exit } ') [ "$DEVNAME" = "$ugen" ] || exit 0 logger -c -t hotplug "Printer attached" usbctl=$(usbdevs -v | awk -v dev="$ugen" ' /^Controller \/dev\/usb[0-9]+:/ { ctl=$2 sub(":", "", ctl) } $0 ~ ("driver: " dev "$") { print ctl exit } ') if [ -n "$usbctl" ]; then chown _cups:_saned /dev/"${ugen}".* "$usbctl" chmod 660 /dev/"${ugen}".* "$usbctl" fi fi ;; midi*) # usb midi keyboard setup for LMMS logger -c -t hotplug "USB Midi Keyboard Attached" sndioctl -f midithru/0 server.port=+${DEVNAME#midi} ;; uvideo*) # usb webcam setup for video calls logger -c -t hotplug "USB Webcam attached" chown -RL root:webcam /dev/video* chmod -RL 660 /dev/video* ;; esac Thanks all. -- iz (she/her) > I say mundane things > so the uninteresting > just might get noticed. izder456 (dot) neocities (dot) org