I did some homework, which let me in part happy, in part not.
I have put a Raspberry OS "base", as from their web site, on a microSD; booted from this card, lsusb as well as aplay and arecord recognize the UM2 but also my mixer. I am happy: USB is not broken.
I burnt again Jambox, and they are not recognised (nor a USB drive).
However, there is an additional difference that might help in debugging.
With Jambox, lsusb lists only: Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Now that is interesting. My image is in use on dozens of Pi's running Jamulus and yours is the only one reporting this problem. My image was built using same process as official Raspberry Pi OS, although kernel is different (realtime kernel), also some different installed packages, but those should not affect USB operation.
The current default eeprom, is 2020-09-03 release, which you are almost certainly running.
One of the changes in that release was to address your very issue on R1.3 and older boards:
have the same problem with pi4 & um2.
see https://sourceforge.net/p/llcon/discussion/533517/thread/e520d50c60/#0930
checked the power presented by pi with a usb fan :-) : all 4 ports make the fan rotate.
As Vincenzo advised, I ran a lsusb from the jambox console. The result was
"Bus 001 Device001: ID 1d6b:0002 Linux Foundation 2.0 root hub" and nothing else.
and, no matter what i plug into any usb port, the reading is the same. I connected a hard disk, it was spinning up, the disk power led shining bright but lsusb does not report anything
The rpi-eeprom-update report is identical to that Vincenzo posted.
So, while we are confident there will be a solution, we do not know where to look for :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I believe the issue is an incompatibility between the realtime kernel I am using (4.19.71-rt24-v7l+) and the 8GB version of Raspberry Pi. That kernel is the most recent official RT kernel build for the PI. If I can't use a newer version, I'll build an image with the standard kernel, I expect it should be OK for Jamulus.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Actually, my RPi is 2GB. And, ehm, I bricked it by tring to force install the last VL805 firmware (because of such CURRENT: 00000000 LATEST: 00000000). Now I am recovering it :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've mainly read reports of USB issues on 8GB Pi's with older kernel. But I think it's actually due to a chipset difference that showed up first in 8GB units, not the memory; maybe 2GB units are now shipping with the newer chip. I'm building a new image right now that uses the (newer) stock kernel (there's no easy way to include a newer realtime kernel).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I tried a build with newer 5.4 (non-realtime) kernel. I expect this will work on your rev of Raspberry Pi. Couple of things I see:
1) Device names are a bit different (USB interface is now card 2 instead of 1. I need to do a minor startup script change to account for this. I can do this tonight and post a build for you to try.
2) Jamulus seems to work fine. But if you i.e. drag windows around while playing, you can hear the audio degrade due to increased jitter. With realtime kernel, Jamulus & jack get priority, so other processes such as window dragging don't hurt the audio.
There's no packaged realtime kernel available for Raspberry Pi since 4.19.71. I might take a stab at building one, but if it were easy, newer realtime kernels would already be available. Looking at the message traffic from the last one, it looks like they went through a lot of iterations getting the hardware compatibility right. But they were trying to make it work on all earlier Pi hardware, which is not an issue for me.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
oops. fine. despite of real time kernels, this seems to be a real time fix :-)
when the new build is avalable, I will test it asap and provide a feedback.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here's a download link for a new image build that uses the stock (5.4) kernel. I expect this will solve the USB issues, but I don't have a problem Pi to test it on.
{ link deleted as it is now obsoleted by release version ]
Please give it a try and let me know how it works. If it solves the USB problem I'll publish it as a release on github.
No new functionality but a couple of settings changes.
The preempt-rt kernel is a "nice to have" feature, but it mainly impacts what else your Raspberry Pi can do while you run Jamulus. If you aren't dragging windows around or running a zoom call, you likely won't notice a difference.
Me too! no issues, it successfully recognizes also my Ammoon mixer. Thank you very much.
I will have to choose 128 like on my computer (for both interfaces).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Kevin: I tried to modify PERIOD and NPERIODS because of too much crackling (not knowing what I am doing of course), I found 64 and 8 as decent values, however: why the buffer delay options 128 and 256 are always disabled in Jamulus? Just to understand. Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
jack is always restarted when you use the "Jamulus Start" desktop icon. So it will always pick up any changes to /etc/jackdrc.conf
I am guessing the 64 and 8 are for your USB mixer?
I have it default to PERIOD=64 because that is required for "enable small network buffers" to work, which can reduce delay.
NPERIODS is the number of PERIODs per buffer (so, byte-wise, 64 x 8 is equivalent to 128 x 4). I have default set to 64 x 5 but some USB audio interfaces need more. If 64 x 8 works reliably with your mixer I wouldn't worry about it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hmmm.. UM2 should not need 8 running Jamulus on Raspberry Pi, we have lots of them running fine at 64 and 5. I would not expect the kernel to make a difference there, but if you want to try it, here's a link to a jambox beta release.
This one uses a 64-bit realtime 5.4 kernel (I figured out how to build it). Also can run as a Jamulus server with GUI ("systemctl start jamulus-server"), and also has a SonoBus peer-to-peer jamming client.
If network bandwidth is your problem, that's fixed by using less (lower audio quality, mono signal, disable small network buffers). Changing the PERIOD and NPERIODS settings for jack audio won't help.
If you're getting crackling that is fixed by increasing NPERIODS, that means the data from your USB interface isn't always there when jack needs it. If it were any other interface, I would say 64 x 8 is nothing to worry about. But we have a bunch of UM2's working reliably at 64 x 5, which makes me ask "what's different?". We know you have a different Pi4 hardware version, that's why you needed the newer kernel. The kernel is also different. I doubt that the kernel is making the difference, but in this case it's easy enough to check.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here's my promised further testing:
Had meanwhile the first (barbershop) singing session via jambox. My 16MBit DSL line required the following config:
-Jack PERIOD 128,
-no small buffers,
-network buffers no auto, local5, server5
-audio: mono, quality: low
That yielded in about 50ms latency, fine for singing barbershop tags etc
But: a config file is made for being changed. Why have I to ask internet during the JamSession and afterwards struggle with nerd issues like makinng invisible dirs visible, sudoing changemods etc to change jack period setting? Please make it more easy for musicians to find and edit the config files :-)
Conclusion:
1. You made a great job!
2. With 16MBit DSL line every home office launching a Zoom video kills the jam session
Meanwhile Jamulus starts with the message "new version available". Any advise how to perform the update?
.. just downloaded the rev 1.2.0b1
I will check it out the next days
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I did some homework, which let me in part happy, in part not.
I have put a Raspberry OS "base", as from their web site, on a microSD; booted from this card,
lsusb
as well asaplay
andarecord
recognize the UM2 but also my mixer. I am happy: USB is not broken.I burnt again Jambox, and they are not recognised (nor a USB drive).
However, there is an additional difference that might help in debugging.
With Jambox,
lsusb
lists only:Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
While the base OS shows:
So, while I am confident there will be a solution, I do not know where to look for :)
Now that is interesting. My image is in use on dozens of Pi's running Jamulus and yours is the only one reporting this problem. My image was built using same process as official Raspberry Pi OS, although kernel is different (realtime kernel), also some different installed packages, but those should not affect USB operation.
The current default eeprom, is 2020-09-03 release, which you are almost certainly running.
One of the changes in that release was to address your very issue on R1.3 and older boards:
You can list hardware and firmware info:
I have 4 Pi 4's here and they all report Revision c03112, Model B Rev 1.2, and current firmware of Thu 03 Sep 2020.
What values are you seeing?
according to this:
https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
the booteeprom config settings can be listed (and changed):
rpi-eeprom-config
Unfortunately I can't reproduce your problem on my hardware.
I'll look into this some more tonight. let me know what you are seeing.
Last edit: Kevin Doren 2020-12-16
Thanks, this is the output:
have the same problem with pi4 & um2.
see https://sourceforge.net/p/llcon/discussion/533517/thread/e520d50c60/#0930
checked the power presented by pi with a usb fan :-) : all 4 ports make the fan rotate.
As Vincenzo advised, I ran a lsusb from the jambox console. The result was
"Bus 001 Device001: ID 1d6b:0002 Linux Foundation 2.0 root hub" and nothing else.
and, no matter what i plug into any usb port, the reading is the same. I connected a hard disk, it was spinning up, the disk power led shining bright but lsusb does not report anything
The rpi-eeprom-update report is identical to that Vincenzo posted.
So, while we are confident there will be a solution, we do not know where to look for :)
I believe the issue is an incompatibility between the realtime kernel I am using (4.19.71-rt24-v7l+) and the 8GB version of Raspberry Pi. That kernel is the most recent official RT kernel build for the PI. If I can't use a newer version, I'll build an image with the standard kernel, I expect it should be OK for Jamulus.
Actually, my RPi is 2GB. And, ehm, I bricked it by tring to force install the last VL805 firmware (because of such CURRENT: 00000000 LATEST: 00000000). Now I am recovering it :)
I've mainly read reports of USB issues on 8GB Pi's with older kernel. But I think it's actually due to a chipset difference that showed up first in 8GB units, not the memory; maybe 2GB units are now shipping with the newer chip. I'm building a new image right now that uses the (newer) stock kernel (there's no easy way to include a newer realtime kernel).
Thanks, when you have ready something to try, I will test it.
I tried a build with newer 5.4 (non-realtime) kernel. I expect this will work on your rev of Raspberry Pi. Couple of things I see:
1) Device names are a bit different (USB interface is now card 2 instead of 1. I need to do a minor startup script change to account for this. I can do this tonight and post a build for you to try.
2) Jamulus seems to work fine. But if you i.e. drag windows around while playing, you can hear the audio degrade due to increased jitter. With realtime kernel, Jamulus & jack get priority, so other processes such as window dragging don't hurt the audio.
There's no packaged realtime kernel available for Raspberry Pi since 4.19.71. I might take a stab at building one, but if it were easy, newer realtime kernels would already be available. Looking at the message traffic from the last one, it looks like they went through a lot of iterations getting the hardware compatibility right. But they were trying to make it work on all earlier Pi hardware, which is not an issue for me.
Thanks. 2) is not an issue, while playing my hands are 200% busy :) .
oops. fine. despite of real time kernels, this seems to be a real time fix :-)
when the new build is avalable, I will test it asap and provide a feedback.
Vincenzo & Erich,
Here's a download link for a new image build that uses the stock (5.4) kernel. I expect this will solve the USB issues, but I don't have a problem Pi to test it on.
{ link deleted as it is now obsoleted by release version ]
Please give it a try and let me know how it works. If it solves the USB problem I'll publish it as a release on github.
No new functionality but a couple of settings changes.
The preempt-rt kernel is a "nice to have" feature, but it mainly impacts what else your Raspberry Pi can do while you run Jamulus. If you aren't dragging windows around or running a zoom call, you likely won't notice a difference.
The updated files are in the jambox-8gb branch. README.md is here:
https://github.com/kdoren/jambox-pi-gen/blob/jambox-8gb/README.md
Last edit: Kevin Doren 2021-01-05
Chapeau! up and running from scratch
UM2 is working, connections to servers are working.
further testing will take place.....:-)
Me too! no issues, it successfully recognizes also my Ammoon mixer. Thank you very much.
I will have to choose 128 like on my computer (for both interfaces).
Kevin: I tried to modify PERIOD and NPERIODS because of too much crackling (not knowing what I am doing of course), I found 64 and 8 as decent values, however: why the buffer delay options 128 and 256 are always disabled in Jamulus? Just to understand. Thanks.
I think changing those values from Jamulus itself may be platform specific. You may need to change them in your driver instead (that is, Jack)
This is what I suppose to have done: changed them in /etc/jackdrc.conf .... but maybe there is something more to do?
The jack service needs to be restarted maybe?
done, of course :)
jack is always restarted when you use the "Jamulus Start" desktop icon. So it will always pick up any changes to /etc/jackdrc.conf
I am guessing the 64 and 8 are for your USB mixer?
I have it default to PERIOD=64 because that is required for "enable small network buffers" to work, which can reduce delay.
NPERIODS is the number of PERIODs per buffer (so, byte-wise, 64 x 8 is equivalent to 128 x 4). I have default set to 64 x 5 but some USB audio interfaces need more. If 64 x 8 works reliably with your mixer I wouldn't worry about it.
64 and 8 or 10 for the UM2 ... regarding small network buffers, I am unable to use it also on Mac (the network is so so - ADSL 20/1).
Hmmm.. UM2 should not need 8 running Jamulus on Raspberry Pi, we have lots of them running fine at 64 and 5. I would not expect the kernel to make a difference there, but if you want to try it, here's a link to a jambox beta release.
This one uses a 64-bit realtime 5.4 kernel (I figured out how to build it). Also can run as a Jamulus server with GUI ("systemctl start jamulus-server"), and also has a SonoBus peer-to-peer jamming client.
https://jambox-project.s3-us-west-2.amazonaws.com/releases/image_2020-12-09-Jambox_pi-gen_v1.2.0b1.zip
Last edit: Kevin Doren 2020-12-16
Thanks, I will try it. However, I suspect the more bandwidth needed goes closer to my network limit, thus giving issues.
If network bandwidth is your problem, that's fixed by using less (lower audio quality, mono signal, disable small network buffers). Changing the PERIOD and NPERIODS settings for jack audio won't help.
If you're getting crackling that is fixed by increasing NPERIODS, that means the data from your USB interface isn't always there when jack needs it. If it were any other interface, I would say 64 x 8 is nothing to worry about. But we have a bunch of UM2's working reliably at 64 x 5, which makes me ask "what's different?". We know you have a different Pi4 hardware version, that's why you needed the newer kernel. The kernel is also different. I doubt that the kernel is making the difference, but in this case it's easy enough to check.
Here's my promised further testing:
Had meanwhile the first (barbershop) singing session via jambox. My 16MBit DSL line required the following config:
-Jack PERIOD 128,
-no small buffers,
-network buffers no auto, local5, server5
-audio: mono, quality: low
That yielded in about 50ms latency, fine for singing barbershop tags etc
But: a config file is made for being changed. Why have I to ask internet during the JamSession and afterwards struggle with nerd issues like makinng invisible dirs visible, sudoing changemods etc to change jack period setting? Please make it more easy for musicians to find and edit the config files :-)
Conclusion:
1. You made a great job!
2. With 16MBit DSL line every home office launching a Zoom video kills the jam session
Meanwhile Jamulus starts with the message "new version available". Any advise how to perform the update?
.. just downloaded the rev 1.2.0b1
I will check it out the next days