Skip to content

Instantly share code, notes, and snippets.

@Overemployed
Last active April 18, 2024 19:08
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save Overemployed/f30db915ac5dcb0b3d17ea1b6310e5f2 to your computer and use it in GitHub Desktop.
Save Overemployed/f30db915ac5dcb0b3d17ea1b6310e5f2 to your computer and use it in GitHub Desktop.
Jacktrip running on PiKVM / Raspberry Pi with arch distro
#!/bin/bash
# Check if script is running as root
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
# your personal machine running jacktrip
REMOTE_JACK_SERVER=nat.local
# change to any name to identify this jacktrip client
JOB_NAME=J1
BUFFER_SIZE=1024
# -d hw:1,0 for pikvm v3 hat
# -d hw:0,0 for others
AUDIO_DEVICE=-d hw:1,0
pacman -Syu
pacman -S --needed jack2 jacktrip njconnect jack-example-tools
# Checking if user 'jacktrip' already exists
if id "jacktrip" &>/dev/null; then
echo "User 'jacktrip' already exists. Skipping user creation."
else
useradd -M -r jacktrip -G audio
fi
cat > /etc/systemd/system/jack.conf <<EOF
JACK_NO_AUDIO_RESERVATION=1
JACK_OPTS=-d alsa $AUDIO_DEVICE -r 44100 -p $BUFFER_SIZE
JACKTRIP_OPTS=-C $REMOTE_JACK_SERVER -n 1 --remotename $JOB_NAME
EOF
cat > /etc/systemd/system/jackd.service <<EOF
[Unit]
Description=jackd
After=sound.target
[Service]
User=jacktrip
Type=simple
LimitRTPRIO=infinity
LimitMEMLOCK=infinity
LimitRTTIME=infinity
EnvironmentFile=/etc/systemd/system/jack.conf
ExecStart=/usr/bin/jackd \$JACK_OPTS
Restart=always
RestartSec=2s
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/jacktrip.service <<EOF
[Unit]
Description=jacktrip
Requires=jackd.service
After=network.target jackd.service
[Service]
User=jacktrip
Type=simple
LimitRTPRIO=infinity
LimitMEMLOCK=infinity
LimitRTTIME=infinity
EnvironmentFile=/etc/systemd/system/jack.conf
ExecStartPre=jack_wait -w -t 5
ExecStart=/usr/bin/jacktrip \$JACKTRIP_OPTS
Restart=always
RestartSec=2s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable jackd.service
systemctl enable jacktrip.service
systemctl start jackd.service
systemctl start jacktrip.service
@josephum
Copy link

Go to https://archlinuxarm.org/packages. Download and install the packages individually. Use the versions you see above

they do no has the old version in the site they only have the version 6

Please check this archive http://tardis.tiny-vps.com/aarm/repos/2023/11/01/armv7h/extra/

@Skripturz
Copy link

Hey @Overemployed,

so I have a problem that I think you might be able to help me with and I would greatly appreciate if you can but pretty much I have a piKVM and I want to use the mic from my person local computer on my remote work computer. In the piKVM support chat I was informed about your Jacktrip running on piKVM and I wanted to know would your solution help me with this?

@anthonyolanre
Copy link

anthonyolanre commented Dec 13, 2023 via email

@Skripturz
Copy link

Hello I can help you do this.

On Wed, 13 Dec 2023 at 07:44, Skripturz @.> wrote: @.* commented on this gist. ------------------------------ Hey @Overemployed https://github.com/Overemployed, so I have a problem that I think you might be able to help me with and I would greatly appreciate if you can but pretty much I have a piKVM and I want to use the mic from my person local computer on my remote work computer. In the piKVM support chat I was informed about your Jacktrip running on piKVM and I wanted to know would your solution help me with this? — Reply to this email directly, view it on GitHub https://gist.github.com/Overemployed/f30db915ac5dcb0b3d17ea1b6310e5f2#gistcomment-4791309 or unsubscribe https://github.com/notifications/unsubscribe-auth/ANFZEJ3ZPIFQ76QZUYNIKKTYJFFDDBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVEYTCNZUGU2DMNJUU52HE2LHM5SXFJTDOJSWC5DF . You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

Hey @anthonyolanre

Thank you, I'm using a piKVM v4 plus. Im not sure how to get started, so far I've ordered the usb sound cards and 3.5mm audio jack cables. Is this jacktrip the answer to my issue? btw you can also reach me on discord with the same username :)

@guessmeguest
Copy link

i get the error "Job for jacktrip.service failed because the control process exited with error code. See "systemctl status jacktrip.service" and "journalctl -xeu jacktrip.service" for details." when i ran the install.sh script. i changed the hostname to my IP. please advice

Screen Shot 2023-06-30 at 9 21 43 AM

I have the same issue too. How can I fix this error?

@anthonyolanre
Copy link

anthonyolanre commented Dec 20, 2023 via email

@guessmeguest
Copy link

Thank you, that cleared the error. But, when run the jacktrip command it gives below error. any idea on how to fix it ? I made sure the variables are correct.

root@pikvm kvmd-webterm]# jackd -d alsa -r 48000 -p 1024 -d hw:1,0
jackdmp 1.9.22
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 Grame.
Copyright 2016-2023 Filipe Coelho.
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_get_descriptor : dll
jack_get_descriptor returns null for 'jack_inprocess.so'
jack_get_descriptor : dll
jack_get_descriptor returns null for 'jack_internal_metro.so'
no message buffer overruns
no message buffer overruns
jack_get_descriptor : dll
jack_get_descriptor returns null for 'jack_intime.so'
no message buffer overruns
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
Failed to connect to session bus for device reservation: Using X11 for dbus-daemon autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead

To bypass device reservation via session bus, set JACK_NO_AUDIO_RESERVATION=1 prior to starting jackd.

Audio device hw:1,0 cannot be acquired...
Cannot initialize driver
JackServer::Open failed with -1
Failed to open server

@Thonysmi
Copy link

Thonysmi commented Dec 24, 2023 via email

@Thonysmi
Copy link

Thonysmi commented Dec 24, 2023 via email

@Thonysmi
Copy link

Thonysmi commented Dec 24, 2023 via email

@Thonysmi
Copy link

Thonysmi commented Dec 24, 2023 via email

@anthonyolanre
Copy link

anthonyolanre commented Dec 24, 2023 via email

@Thonysmi
Copy link

Thonysmi commented Dec 24, 2023 via email

@tatara-eth
Copy link

tatara-eth commented Jan 10, 2024

I'm getting the same issue. @josephum have you found a solution? I had to uninstall jacktrip to get sound back to my pikvm through HDMI, but now I can't use jacktrip.

Try to uninstall all the jack/jacktrip packages first: pacman -Rscnd jack2 jacktrip njconnect jack-example-tools

Then go to package cache to rollback with the packages that worked before: cd /var/cache/pacman/pkg/ pacman -U file:///rtaudio-5.2.0-2-armv7h.pkg.tar.xz pacman -U file:///xdg-utils-1.1.3+45+g301a1a4-1-any.pkg.tar.xz pacman -U file:///jacktrip-1:1.9.0-1-armv7h.pkg.tar.xz pacman -U file:///jack2-1.9.22-1-armv7h.pkg.tar.xz pacman -U file:///njconnect-1.6-3-armv7h.pkg.tar.xz pacman -U file:///jack-example-tools-4-1-armv7h.pkg.tar.xz

Works here!

Thank you, this seemed to solve my issue!

Note: There was an issue installing the jacktrip package, so I had to dig into this archive you provided: http://tardis.tiny-vps.com/aarm/repos/2023/11/01/armv7h/extra/ and manually installed all the dependencies it needed before I could successfully install the older version of jacktrip. This process looked something like this:

1. Find a dependency that I'm missing:
wget http://tardis.tiny-vps.com/aarm/repos/2023/11/01/armv7h/extra/qt5-base-5.15.11+kde+r138-1-armv7h.pkg.tar.xz
2. Install dependency after the download is complete:
sudo pacman -U qt5-base-5.15.11+kde+r138-1-armv7h.pkg.tar.xz

This can look entirely different for you depending on the dependencies it's asking you to install. Once I've installed all the dependencies (even the dependencies that my jacktrip dependencies needed)... I then attempted to reinstall the jacktrip package.

Appreciate you, @josephum for providing that archive.

@837
Copy link

837 commented Jan 26, 2024

I hope this helps someone else as well.

I did all of the above, services are enable and I have a connection from peer, I can also connect the inputs and outputs through qjackctl on my macbook.
BUT, I had zero sound coming through, neither in nor output.

I finally figured it out: With my PiKVM v4 I needed to set the AUDIO_DEVICE setting in the jack.conf:
AUDIO_DEVICE=-d hw:1,0 to AUDIO_DEVICE=-d hw:0,0 <-- 0,0 instead 1,0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment