Stap 4: De scripts
De volgende scripts maken
sudo nano /usr/lib/udev/bluetooth Type this all into the empty editor, then save Note and adjust the radio frequency and volume to your preference #!/bin/bash AUDIOSINK="alsa_output.platform-bcm2835_AUD0.0.analog-stereo" ACTION=$(expr "$ACTION" : "\([a-zA-Z]\+\).*") echo "Executing bluetooth script...|$ACTION|" >> /var/log/bluetooth_dev if [ "$ACTION" = "add" ] then # Turn off BT discover mode before connecting existing BT device to audio hciconfig hci0 noscan # Turn off BT auto connect if it is still running sudo killall bluetooth-auto # set the audio output to the hdmi amixer cset numid=3 2 # Set volume level to 100 percent amixer set Master 100% # Set sink volume to 125% pacmd set-sink-volume 0 0x12500 for dev in $(find /sys/devices/virtual/input/ -name input*) do if [ -f "$dev/name" ] then mac=$(cat "$dev/name") # Add this mac address to list of trusted addresses TRUST=$(grep "$mac" /usr/lib/udev/bluetooth-trust) if [ -z "$TRUST" ] then echo "Adding $mac to trusted addresses" >> /var/log/bluetooth_dev echo $mac >> /usr/lib/udev/bluetooth-trust fi mac_underscore=$(cat "$dev/name" | sed 's/:/_/g') bluez_dev=bluez_source.$mac_underscore # Set source volume to 125% pacmd set-source-volume $bluez_dev 0x12500 sleep 1 CONFIRM=`sudo -u pi pactl list short | grep $bluez_dev` if [ ! -z "$CONFIRM" ] then echo "Setting bluez_source to: $bluez_dev" >> /var/log/bluetooth_dev echo pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev sudo -u pi pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev echo "Killing any existing radio connections" >> /var/log/bluetooth_dev sudo killall pifm >> /var/log/bluetooth_dev echo "Connecting bluetooth output to radio input, playing on 87.7" >> /var/log/bluetooth_dev # Using $AUDIOSINK instead of 0 here doesn't seem to work, not sure why echo pacat -r -d 0 --latency-msec=50 | sox -t raw -r 44100 -e signed-integer -b 16 -c 2 - -t wav - gain -l 10 | sudo /home/pi/fm/pifm - 87.9 44100 stereo >> /var/log/bluetooth_dev sudo -u pi pacat -r -d 0 --latency-msec=50 | sudo -u pi sox -t raw -r 44100 -e signed-integer -b 16 -c 2 - -t wav - gain -l 10 | sudo /home/pi/fm/pifm - 87.7 44100 stereo >> /var/log/bluetooth_dev fi fi done fi if [ "$ACTION" = "remove" ] then # Turn on bluetooth discovery if device disconnects sudo hciconfig hci0 piscan # Turn on bluetooth auto discovery sudo /usr/lib/udev/bluetooth-auto & fi Finally, grant appropriate permissions to the script sudo chmod 774 /usr/lib/udev/bluetooth
sudo nano /usr/lib/udev/bluetooth-auto Type this all into the empty editor, then save #!/bin/bash while [ true ] do sleep 1 echo "Scanning for trusted devices" >> /var/log/bluetooth_dev for mac in $(sudo hcitool scan | grep ":" | awk '{print $1}') do trust=$(grep "$mac" /usr/lib/udev/bluetooth-trust) if [ ! -z "$trust" ] then _BT_ADAPTER=`dbus-send --system --print-reply --dest=org.bluez / org.bluez.Manager.DefaultAdapter|awk '/object path/ {print $3}'` BT_ADAPTER=${_BT_ADAPTER//\"/} mac_underscore=$(cat "$mac" | sed 's/:/_/g') echo "Connecting to device at: $mac" >> /var/log/bluetooth_dev sudo dbus-send --print-reply --system --dest=org.bluez $BT_ADAPTER/dev_$mac_underscore org.bluez.AudioSource.Connect >> /var/log/bluetooth_dev exit 0 fi done done Finally, grant appropriate permissions to the script, and create the trust file sudo chmod 774 /usr/lib/udev/bluetooth-auto sudo touch /usr/lib/udev/bluetooth-trust
sudo nano /etc/init.d/bluetooth-agent Type this all into the empty editor, then save #!/bin/sh #/etc/init.d/bluetooth-agent ### BEGIN INIT INFO # Provides: bluetooth-agent # Required-Start: $remote_fs $syslog bluetooth pulseaudio # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Makes Bluetooth discoverable and connectable to 0000 # Description: Start Bluetooth-Agent at boot time. ### END INIT INFO USER=root HOME=/root export USER HOME case "$1" in start) echo "initializing pulseaudio" sudo pactl info echo "setting bluetooth discoverable" sudo hciconfig hci0 piscan start-stop-daemon -S -x /usr/bin/bluetooth-agent -c pi -b -- 0000 echo "bluetooth-agent started pw: 0000" sudo /usr/lib/udev/bluetooth-auto & echo "bluetooth-auto-discovery started" sudo /home/pi/fm/pifm /home/pi/fm/silence 87.7 44100 stereo echo "pifm started at 87.7, playing silence" ;; stop) echo "Stopping bluetooth-agent" start-stop-daemon -K -x /usr/bin/bluetooth-agent ;; *) echo "Usage: /etc/init.d/bluetooth-agent {start|stop}" exit 1 ;; esac exit 0 Finally, create the silence file, grant appropriate permissions to the script, and add it to the list of programs that run on startup sudo touch /home/pi/fm/silence sudo chmod 755 /etc/init.d/bluetooth-agent sudo update-rc.d bluetooth-agent defaults