Somehow or other I can seem to get things working with Jamulus, but I really am struggling to explain how.
As I type this, I am connected to a local Jamulus server, and I have an Overall delay of about 70ms….which seems to be in the acceptable range.
I am running the Focusright: Scarlett Solo Analog to Digital converter from a microphone pickup. This is connected to my laptop via USB (2.0).
And right now USB Tree looks like this:
$ lsusb --tree /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M |__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 4: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 2: Dev 10, If 1, Class=Printer, Driver=usblp, 480M |__ Port 2: Dev 10, If 2, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 2: Dev 10, If 0, Class=Vendor Specific Class, Driver=, 480M |__ Port 1: Dev 9, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 1: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 6: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 480M |__ Port 6: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 480M |__ Port 6: Dev 3, If 3, Class=Vendor Specific Class, Driver=snd-usb-audio, 480M |__ Port 6: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 480M |__ Port 8: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M |__ Port 8: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 9: Dev 7, If 0, Class=Vendor Specific Class, Driver=, 12M |__ Port 14: Dev 8, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 14: Dev 8, If 1, Class=Wireless, Driver=btusb, 12M |
So, yeah ,I have a few things connected, mouse,. keyboard, printer. I’m in a docking station, and I think that is the difference between Bus1 and Bus2.
I’m running Fedora 33 with the Low latency Kernel from Stanford CCRMA Built for Fedora 32 (the 33 Kernel is not out yet). Fetched from here.
I have disabled pulse at the user level as I wrote about in a previous article.
I still don’t really know Jack.
On QJackCtl I’ve gone to Settings-Advanced and set the Scarlett Solo as the input and output device. You can see the Green card icon in the combo boxes on the right hand side below.
Here’s the black magic. I was getting really port round trips times (120msec) and then I went to QJackCtl And messed with the Parameters. I upped the Periods/Buffer from 2 to 4, and restarted the server.
The latency value in the bottom right went up to 21.3. But the overall delay dropped to about 70ms.
Then I set it back to the values you see above. Periods per buffer: 2. And the Overall Delay stayed the same. As I write this now, it is at 64 ms.
I’m tempted to keep tweaking the values to see what happens. But for now…I know there seems to be a relationship between Jack parameters and the Overall Delay in Jamulus. I just don’t know what it is.
Inneresting…