jackd: Raspberry Pi and Audioinjector
Moderator: flatmax
jackd: Raspberry Pi and Audioinjector
Setup jackd to work with the Audio Injector soundcard for the Raspberry Pi.
Jackd1 does not work with the Raspberry Pi (it gives BUS ERROR which is probably due to an old padding issue).
Jackd2 does work with the Raspberry Pi. We will install that and setup the mmap interface to work with the audio injector sound card.
Firstly uninstall jackd1 : sudo apt-get purge jackd1
Now install jackd2 : sudo apt-get install jackd2
Edit your /boot/config.txt to include : dtoverlay=i2s-mmap
When you install the jackd2 package, it will prompt you whether you want to use real time settings. Say yes here as this will up the scheduling priority of jackd audio related processes. I find jackd has great performance and no xruns.
Reboot to have the i2s-mmap devicetree overlay setup and whala ... jackd will be working :
jackd -d alsa -r 96000
If you hear pops and see xruns, probably a good idea to enable real time permissions, to do that run the following and answer yes :
sudo dpkg-reconfigure jackd2
Matt
http://www.audioinjector.net/#!/rpi-hat
Jackd1 does not work with the Raspberry Pi (it gives BUS ERROR which is probably due to an old padding issue).
Jackd2 does work with the Raspberry Pi. We will install that and setup the mmap interface to work with the audio injector sound card.
Firstly uninstall jackd1 : sudo apt-get purge jackd1
Now install jackd2 : sudo apt-get install jackd2
Edit your /boot/config.txt to include : dtoverlay=i2s-mmap
When you install the jackd2 package, it will prompt you whether you want to use real time settings. Say yes here as this will up the scheduling priority of jackd audio related processes. I find jackd has great performance and no xruns.
Reboot to have the i2s-mmap devicetree overlay setup and whala ... jackd will be working :
jackd -d alsa -r 96000
If you hear pops and see xruns, probably a good idea to enable real time permissions, to do that run the following and answer yes :
sudo dpkg-reconfigure jackd2
Matt
http://www.audioinjector.net/#!/rpi-hat
Check out our audiophile quality crossovers : https://bit.ly/2kb1nzZ
Please review the Zero sound card on Amazon USA : https://www.amazon.com/dp/B075V1VNDD
---
Check out our new forum on github : https://github.com/Audio-Injector
Please review the Zero sound card on Amazon USA : https://www.amazon.com/dp/B075V1VNDD
---
Check out our new forum on github : https://github.com/Audio-Injector
Re: jackd: Raspberry Pi and Audioinjector
Hello,
I am trying to establish a master-slave connection using jackd to stream realtime audio.
My configuration is Ubuntu (master) and RPI3 (slave).
Linux kernel is 4.10.0-19-generic and I have latest Jessie on RPI3.
Launched qjackctl and created a setup for jackd, saved on ~/.jackdrc.
I tried to change the Frames/Period to 256, 512, 1024, 2048, 4096 and the Period/Buffer to 2, 3, 4.
I can start the server via qjackctl, then I issue the command
The messages windows does not show any errors or Xrun messages.
Then I start the Client on the RPI3 side
At this point I can see the raspberry on the connect window as shown in https://drive.google.com/open?id=0B3rsi ... kZpN2hCeFk and I can connect the master:capture to the slave:playback using the connect interface.
The messages windows is flooded with error messages as follows:
Audio does not play on the slave side, and after few seconds the client connection drops.
I tried already similar configuration using:
MacPro (master) - RPI3 (client)
and
RPI3 (naster) - RPI3 (client)
with identical results.
So far I was not able to get any audio at all on the client side.
Any help to address this issue will be really appreciated.
Thank you in advance for your time!!
-Andrea
I am trying to establish a master-slave connection using jackd to stream realtime audio.
My configuration is Ubuntu (master) and RPI3 (slave).
Linux kernel is 4.10.0-19-generic and I have latest Jessie on RPI3.
Launched qjackctl and created a setup for jackd, saved on ~/.jackdrc.
Code: Select all
marco@Dell-E6410:~$ cat ~/.jackdrc
/usr/local/bin/jackd -S -P80 -t2000 -dalsa -r44100 -p1024 -n3 -D -Chw:MID,0 -Phw:MID,0
marco@Dell-E6410:~$
I can start the server via qjackctl, then I issue the command
Code: Select all
marco@Dell-E6410:~$ jack_load netmanager
netmanager is running.
client name = netmanager
Then I start the Client on the RPI3 side
Code: Select all
pi@raspberrypi$jackd -R -S -d net
pi@raspberrypi$
The messages windows is flooded with error messages as follows:
Code: Select all
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackEngine::XRun: client = marco-Latitude-E7440 was not finished, state = Triggered
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackEngine::XRun: client = marco-Latitude-E7440 was not finished, state = Triggered
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackEngine::XRun: client = marco-Latitude-E7440 was not finished, state = Triggered
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Thu Jun 29 18:26:48 2017: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
(...)
19:14:13.915 XRUN callback (4 skipped).
Thu Jun 29 19:14:13 2017: NetMaster : missing last data packet from 'raspberrypi'
Thu Jun 29 19:14:13 2017: NetMaster : missing last data packet from 'raspberrypi'
Thu Jun 29 19:14:14 2017: NetMaster : missing last data packet from 'raspberrypi'
Thu Jun 29 19:14:14 2017: NetMaster : missing last data packet from 'raspberrypi'
(...)
I tried already similar configuration using:
MacPro (master) - RPI3 (client)
and
RPI3 (naster) - RPI3 (client)
with identical results.
So far I was not able to get any audio at all on the client side.
Any help to address this issue will be really appreciated.
Thank you in advance for your time!!
-Andrea
Re: jackd: Raspberry Pi and Audioinjector
OK - so seems that you understand how to hook up master/slave jackd systems.
Here is an example of the way I set up, which is very similar, on the master :
On the slave :
I specify the number of input and output ports I want to run.
Sometimes I also use the -M to increase this value to make sure larger network transmissions are happening ... you could even tune that to match your period size ... hmmm. For example, sometimes I do many channels over the network and use the MTU tuning capacity to improve results. I wonder if that would help your situation at all ?
It would be good to have a stable system before you do further debugging. Can you try to get rid of the xruns and process errors ?
thanks
Matt
Here is an example of the way I set up, which is very similar, on the master :
Code: Select all
jackd -d alsa -d hw:SL1 -o 2 -i 2
jack_load netmanager
Code: Select all
jackd -r -d net -a 192.168.0.20 -C2 -P2
Sometimes I also use the -M to increase this value to make sure larger network transmissions are happening ... you could even tune that to match your period size ... hmmm. For example, sometimes I do many channels over the network and use the MTU tuning capacity to improve results. I wonder if that would help your situation at all ?
It would be good to have a stable system before you do further debugging. Can you try to get rid of the xruns and process errors ?
thanks
Matt
Check out our audiophile quality crossovers : https://bit.ly/2kb1nzZ
Please review the Zero sound card on Amazon USA : https://www.amazon.com/dp/B075V1VNDD
---
Check out our new forum on github : https://github.com/Audio-Injector
Please review the Zero sound card on Amazon USA : https://www.amazon.com/dp/B075V1VNDD
---
Check out our new forum on github : https://github.com/Audio-Injector
Re: jackd: Raspberry Pi and Audioinjector
Hello,
sorry for the late reply and thank you for your hint.
I would LOVE to get rid of those (damn) Xruns
Will keep you posted!
Cheers,
Andrea
sorry for the late reply and thank you for your hint.
I would LOVE to get rid of those (damn) Xruns
Will keep you posted!
Cheers,
Andrea
Re: jackd: Raspberry Pi and Audioinjector
Ok, I just noticed the jackd and wi-fi are not good friends
As long as master and slave are connected through wired Ethernet, I do not see the Xruns.
When I try to use wi-fi on the slave, then the Xruns happens.
I searched on the net and found out there are several problem to address when using jack and wi-fi. I am using wap_supplicant to manage wi-fi and I read that one of the problem could be the process keeps querying for wi-fi networks. So I stopped the query and forced a static IP address in my subnet.
Even with the jack priority set to 90 I see the Xruns flooding as soon as the slave gets connected.
Any pointer to address this issue?
Thank you in advance!
Andrea
As long as master and slave are connected through wired Ethernet, I do not see the Xruns.
When I try to use wi-fi on the slave, then the Xruns happens.
I searched on the net and found out there are several problem to address when using jack and wi-fi. I am using wap_supplicant to manage wi-fi and I read that one of the problem could be the process keeps querying for wi-fi networks. So I stopped the query and forced a static IP address in my subnet.
Even with the jack priority set to 90 I see the Xruns flooding as soon as the slave gets connected.
Any pointer to address this issue?
Thank you in advance!
Andrea
Re: jackd: Raspberry Pi and Audioinjector
Did you try to turn up your MTU ?
Increase the latency by increasing the jackd period size ?
Matt
Increase the latency by increasing the jackd period size ?
Matt
Check out our audiophile quality crossovers : https://bit.ly/2kb1nzZ
Please review the Zero sound card on Amazon USA : https://www.amazon.com/dp/B075V1VNDD
---
Check out our new forum on github : https://github.com/Audio-Injector
Please review the Zero sound card on Amazon USA : https://www.amazon.com/dp/B075V1VNDD
---
Check out our new forum on github : https://github.com/Audio-Injector
Re: jackd: Raspberry Pi and Audioinjector
Hello,
once again, thank you for your answer.
I tried to change the Frames/Period to 256, 512, 1024, 2048, 4096 and the Period/Buffer to 2, 3, 4.
I also tried to increase the MTU up to 24000 (I don't even know if it makes sense) using multiples of 1500 (like 3000, 6000 and so on).
The result is still the same: flood of errors like
and slave losing connectivity after few seconds. I am start thinking I have to surrender ....but I would like to give jack over wi-fi another chance.
If you have another idea I will be happy to try.
One question: is there any debug I can turn on to discover more information about this process error?
Does it help looking into /var/log/syslog ?
Thank you in advance for your help.
Cheers,
Andrea
once again, thank you for your answer.
I tried to change the Frames/Period to 256, 512, 1024, 2048, 4096 and the Period/Buffer to 2, 3, 4.
I also tried to increase the MTU up to 24000 (I don't even know if it makes sense) using multiples of 1500 (like 3000, 6000 and so on).
The result is still the same: flood of errors like
Code: Select all
JackAudioDriver::ProcessGraphAsyncMaster: Process error
If you have another idea I will be happy to try.
One question: is there any debug I can turn on to discover more information about this process error?
Does it help looking into /var/log/syslog ?
Thank you in advance for your help.
Cheers,
Andrea
Re: jackd: Raspberry Pi and Audioinjector
I'm trying to setup jackd running with the Octocard. I've setup the I2S mmap for /boot/config, but I just can't get the damn jackd server to start:
Ideas ?
Update: export DISPLAY=:0 helper and also setting dbus params with export $(dbus-launch), but now I cannot start the server:
# sudo dbus-launch jack_control start
--- start
DBus exception: org.jackaudio.Error.Generic: Failed to open server
And in jackdbus.log:
Sun Jan 28 11:25:41 2018: Controller activated. Version 1.9.11 (unknown) built on Tue Mar 28 04:44:11 2017
Sun Jan 28 11:25:41 2018: Loading settings from "/root/.config/jack/conf.xml" using expat_2.2.0 ...
Sun Jan 28 11:25:41 2018: ERROR: failed to stat "/root/.config/jack/conf.xml", error is 2 (No such file or directory)
Sun Jan 28 11:25:41 2018: ERROR: open() failed to open conf filename.
Sun Jan 28 11:25:41 2018: Listening for D-Bus messages
Sun Jan 28 11:25:41 2018: Starting jack server...
Sun Jan 28 11:25:41 2018: ERROR: `default' server already active
Sun Jan 28 11:25:41 2018: ERROR: Failed to open server
This all is very confusing...
Code: Select all
jackdmp 1.9.11
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2014 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
Jack: JackPosixThread::StartImp : create non RT thread
Jack: JackPosixThread::ThreadHandler : start
Jack: JackDriver::Open capture_driver_name = hw:0
Jack: JackDriver::Open playback_driver_name = hw:0
Jack: Check protocol client = 8 server = 8
Jack: JackEngine::ClientInternalOpen: name = system
Jack: JackEngine::AllocateRefNum ref = 0
Jack: JackPosixSemaphore::Allocate name = jack_sem.0_default_system val = 0
Jack: JackEngine::NotifyAddClient: name = system
Jack: JackGraphManager::SetBufferSize size = 1024
Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0
Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
Jack: JackDriver::SetupDriverSync driver sem in flush mode
Failed to connect to session bus for device reservation Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Audio device hw:0 cannot be acquired...
Jack: ~JackDriver
Cannot initialize driver
Jack: no message buffer overruns
Jack: JackPosixThread::Stop
Jack: JackPosixThread::ThreadHandler : exit
JackServer::Open failed with -1
Jack: Succeeded in unlocking 82278944 byte memory area
Jack: JackShmMem::delete size = 0 index = 0
Jack: ~JackDriver
Jack: Succeeded in unlocking 1232 byte memory area
Jack: JackShmMem::delete size = 0 index = 1
Jack: Cleaning up shared memory
Jack: Cleaning up files
Jack: Unregistering server `default'
Failed to open server
Update: export DISPLAY=:0 helper and also setting dbus params with export $(dbus-launch), but now I cannot start the server:
# sudo dbus-launch jack_control start
--- start
DBus exception: org.jackaudio.Error.Generic: Failed to open server
And in jackdbus.log:
Sun Jan 28 11:25:41 2018: Controller activated. Version 1.9.11 (unknown) built on Tue Mar 28 04:44:11 2017
Sun Jan 28 11:25:41 2018: Loading settings from "/root/.config/jack/conf.xml" using expat_2.2.0 ...
Sun Jan 28 11:25:41 2018: ERROR: failed to stat "/root/.config/jack/conf.xml", error is 2 (No such file or directory)
Sun Jan 28 11:25:41 2018: ERROR: open() failed to open conf filename.
Sun Jan 28 11:25:41 2018: Listening for D-Bus messages
Sun Jan 28 11:25:41 2018: Starting jack server...
Sun Jan 28 11:25:41 2018: ERROR: `default' server already active
Sun Jan 28 11:25:41 2018: ERROR: Failed to open server
This all is very confusing...
Re: jackd: Raspberry Pi and Audioinjector
Ok, I built jack2 from source without dbus, and with the RT patched kernel from https://github.com/guysoft/RealtimePi (thanks guysoft) I can now run the Octocard with frames down to 32 (haven't tried lower) without a hitch. Very happy
start_jack:
start_jack:
Code: Select all
#!/bin/sh
# Running 64 frames mostly to hold CPU usage down (with 64 frames its about 10%)
sudo jackd -P70 -d alsa -r 48000 -p 64 &
sudo jack_wait --wait --timeout 10
sudo jack_connect system:capture_1 system:playback_1
sudo jack_connect system:capture_2 system:playback_2
Who is online
Users browsing this forum: No registered users and 5 guests