I have a use case for a few dozen of individuals that I am testing the Comet KVM and Comet PoE KVM for right now. I would like to have the option to change the audio source from the existing configuration to using the USB Port. From my research so far, it appears that the kernel needs to be compiled with the snd-usb-audio.ko module. I am plugging the USB-A cable from the KVM into my devices USB-B port which presents itself as a USB Codec as well as serial port. Here are the details of what it detects right now.. but even if I modify the configuration at CLI to point to that CODEC, my suspicion is that it wont work until that module is compiled in.
Usecase:
Allow selecting of custom defined Audio Input and Output devices in the UI which are detected at the CLI.
Connecting the USB-A interface on the KVM into a USB-B interface on the host to receive the audio and send the audio from the selected interfaces. Specifically use the USB AUDIO Codec as a source for the received audio.
bash-4.4# lsusb
Bus 002 Device 007: ID 08bb:29c3
Bus 002 Device 005: ID 0451:2036
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 006: ID 0403:6010
Bus 002 Device 001: ID 1d6b:0001
bash-4.4# cat /sys/bus/usb/devices/2-1.2/product 2>/dev/null || echo "No product info"
USB AUDIO CODEC
USB Hub (2-1)
├── FTDI Dual RS232 (2-1.1)
└── USB Audio Codec (2-1.2)
Connected USB Devices:
Device 2-1: General Purpose USB Hub
Manufacturer: (not specified)
USB ID: 0451:2036
Device 2-1.1: Dual RS232 (Serial Adapter)
Manufacturer: FTDI
USB ID: 0403:6010
Device 2-1.2: USB AUDIO CODEC
Manufacturer: BurrBrown from Texas Instruments
USB ID: 08bb:29c3
USB Controllers:
Bus 1: EHCI Host Controller (USB 2.0)
Bus 2: Generic Platform OHCI controller (USB 1.1)
After initially looking this over, I suspect there needs to be snd-usb-audio compiled in? and some modification of the UI to allow a dropdown slection of the detected audio devices. Happy to run some more command and debug as needed or if the source is posted I can roll my own.
It should be implemented through UAC2 in the UDC. The question is why this is needed. JETKVM uses USB Audio because its hardware design initially did not account for HDMI Audio, making it unusable. As a result, USB Audio was adopted. However, since we have now implemented HDMI Audio, USB Audio should no longer be necessary.
The use case is for a group of people who want to remote control their equipment. Most of our equipment has HDMI but doesn't support audio over HDMI since it's not traditional computers. However, the equipment uses standard USB CODECs for audio.
The problem we're solving is remote access to equipment when traveling. If we could get audio output via USB, we could control the equipment via keyboard and mouse (which the GLKVM does very well) and also hear the audio through the USB CODEC.
The advanced feature would be connecting microphone input from the browser to a second USB CODEC.
While HDMI audio works fine for normal computers, HDMI doesn't carry audio in our situation. We need the option to select USB CODEC as the audio source for both output and input. The system can use the browser's detected microphone, as long as we can configure the KVM to route browser microphone input to the USB CODEC.
Thank you for the clarification about UAC2/UDC implementation. I understand that refers to USB gadget mode where the KVM acts as a USB audio device to the target computer.
However, my request is for USB host support, not USB gadget functionality. I have an external USB audio codec (Texas Instruments BurrBrown) that I want to connect to the KVM's USB host port as an audio input source, similar to how the current HDMI audio input works.
The issue is that the kernel lacks the snd-usb-audio driver needed for USB host-side audio devices. When I connect the USB audio codec:
USB enumeration works correctly (device detected as ID 08bb:29c3)
Audio interfaces are properly identified (USB Audio Class 1.0)
But no audio driver binds to the device, so it can't function as an ALSA audio source
This would allow using the USB audio codec as an alternative audio input method alongside the existing HDMI audio, giving users more flexibility in audio routing - particularly useful for setups where HDMI audio extraction isn't optimal.
Would it be possible to include USB Audio Class host support (CONFIG_SND_USB_AUDIO) in future firmware builds?
Thanks, I have downloaded it. Will this work on the KVM Poe and the Non Poe Version? I have both, so I just want to know which one I should test this on?
Can you please create the same update for the PoE version so I can apply it as well and test before rolling it out?
So far this is testing VERY well in with the non PoE version, with only one change needed which I documented below. Now I have both audio coming from my remote device into my browser and I can send mic-audio TO my remote device using my USB mic which is detected by the browser.
Any chance this module will be incorporated into the mainline releases?
Love your support and looking forward to this too! While HDMI audio works decently well for me, older Intel UHD graphics drivers have a sound output bug where the first few seconds of audio are lost over HDMI and DP. Obviously this is bad because I miss notification sounds. Intel is terrible and never provided a fix, so there’s various hacks and workarounds out there which keep the output alive by playing static from an app, except that can’t work on restricted workstations. A USB output audio device which bypasses the Intel driver would definitely fix this.
I still need to explain that we will compile the required kernel modules, but for the application layer, we may only provide documentation, as this is not a common requirement. Adding it to the WEB UI would only increase user confusion.
I'm curious if you've given any thought to a JSON(-like?) config file someplace that doesn't get wiped with firmware upgrades that can do some of these one-off configurations more easily. Things like defining custom NTP servers by modifying the appropriate files automatically on reboot would be a great middle ground between having to hand-edit everything manually and having a cluttered UI. Adding a parser for a simple "enable_usb_audio": true would be awesome.
Just my guess here, but I had to hand edit the file listed above because by default its going to use whatever is in that config file which was the HDMI. I had to do some research with LSUSB to figure out what the hardware ID was I plugged it in to the box. Once I figure that out I was able to edit the file and swap the information for what I wanted. (After the kernel modules were added). Since I had to do that, I wonder if the hardware ID that I was presented with will ALWAYS be the same for ALL users that chose the route audio over USB. if so, then I think that parser would work. However, if it changes depending on device/device type then it might be more complex? Not sure, just a guess. I am happy with the result as it is now. When it rolls into prod release, I think I can just make a simple bash script to swap the line entry out for my use cases..
I haven't tested this across firmware updates, but rumor has it that storing that script at /etc/kvmd/user/scripts/S20_[script_name] may run it automatically on firmware updates that would wipe the config.