【问题标题】:Bluetoothctl and PulseAudio via Crontab problemsBluetoothctl 和 PulseAudio 通过 Crontab 问题
【发布时间】:2019-05-16 06:27:38
【问题描述】:

我正在尝试将我的 Pi 连接到我的蓝牙扬声器,以便在一天中的特定时间通过 cron 作业播放音乐。 如果我在 SSH 中手动运行以下脚本,它们可以工作,但是当我将它们作为 cron 作业放入时,它会失败。

BTConnect.sh

#!/bin/bash
#/usr/bin/pulseaudio -D --system
/usr/bin/sudo service bluetooth restart
/bin/sleep 10
#/usr/bin/pactl load-module module-bluetooth-discover
/usr/bin/pactl list sinks short
/bin/sleep 5
/usr/bin/bluetoothctl << EOF
connect 96:13:5A:00:5D:E6
EOF
/bin/sleep 15
/usr/bin/pactl set-source-volume 0 65535
/usr/bin/pactl list sinks short
/usr/bin/pactl load-module module-loopback source=0 sink=1 rate=44100 adjust_time=0
/usr/bin/mplayer --volume 35 -shuffle -ao pulse Music

BTKill.sh

#!/bin/bash
/usr/bin/pkill mplayer
/usr/bin/bluetoothctl << EOF
disconnect 96:13:5A:00:5D:E6
EOF
/usr/bin/pulseaudio -k

我以“Pi”身份登录 我手动运行 BTConnect.sh 以播放 Music 文件夹中的音乐,然后运行 ​​BTKill.sh 停止播放。 这些都在我的 /home/pi 文件夹中。 当上面的'/usr/bin/pactl load-module module-loopback source=0 sink=1 rate=44100 adjust_time=0'执行时,我得到:

0       alsa_output.platform-soc_audio.analog-stereo    module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED
1       bluez_sink.96_13_5A_00_5D_E6.a2dp_sink  module-bluez5-device.c  s16le 2ch 44100Hz       SUSPENDED

但是当它从一个 cron 作业运行时,'1 bluez_sink...' 不会出现。所以 mplayer 运行并播放音乐,但它没有发送到蓝牙设备。 这是我的 cron 作业(创建为“Pi”用户,而不是 Root):

0,10,20,30,40,50 * * * * /home/pi/BTConnect.sh >>/home/pi/BTConnect.log&
5,15,25,35,45,55 * * * * /home/pi/BTKill.sh >>/home/pi/BTKill.log&

如果我手动登录并运行 BTConnect.sh,那么只要我以“Pi”身份登录,作业就会正常运行。但是如果在 Raspberry Pi 重新启动后,我需要它始终工作而无需登录。

我在这里错过了什么?

【问题讨论】:

    标签: bluetooth cron pulseaudio


    【解决方案1】:

    尝试将 XDG_RUNTIME_DIR 环境变量设置为可以执行 pactl list 并查看连接设备的用户的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 2016-03-13
      • 1970-01-01
      • 2017-06-02
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多