Автор Тема: Сетевой аудиоплеер OrangePi PC  (Прочитано 45685 раз)

Оффлайн UB3GAD

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #165 : Март 01, 2018, 11:12:45 am »
Собрал новую игрушку
мозги orangepi zero, софт armbian  kernel 4.14.18 + lms + squeezelite-armv6hf + пара скриптов для энкодера и дисплея , функционал стандартный.
Материал матовое орг стекло.
« Последнее редактирование: Март 01, 2018, 01:58:47 pm от UB3GAD »
Orange Pi PC
Raspberry pi 3
Odroid C0

Оффлайн UB3GAD

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #166 : Март 07, 2018, 03:32:24 pm »
Моя немного модифицированная инструкция по установке LMS и Squzeelite на основе инструкции  от ua3nbw с несколькими скриптами и дополнениями 

в частности с прикрученным ик пультом, энкодером и дисплеем на 4е строки подключенным по  i2c

У меня корректно все заработало только Armbian_5.35_Orangepizero_Debian_jessie_default_3.4.113, на 9-ом с последним ядром не работает пульт, если пульт вам не нужен можете использовать его
в консоли выполнить от root
apt update
apt upgrade
reboot

apt install libtimedate-perl libany-uri-escape-perl libswitch-perl lcdproc  libtimedate-perl i2c-tools mc htop python-pip libexif12 flac libflac-dev libfaad2 libmad0 libasound2-dev libmad0-dev libvorbis-dev libvo-aacenc-dev libmpg123-dev libio-socket-ssl-perl  libnet-ssleay-perl telnet -y

pip install OPi.GPIO

dpkg-reconfigure tzdata

wget https://raw.githubusercontent.com/Hypfer/squeezelite-downloads/master/squeezelite-armv6hf
chmod u+x squeezelite-armv6hf
mv squeezelite-armv6hf /usr/bin


команда
squeezelite-armv6hf -l
Показывает все доступные аудио выходы в системе 

Для автоматического запуска squeezelite я прописал в /etc/rc.local
squeezelite-armv6hf -o hw:CARD=audiocodec,DEV=0&
где hw:CARD=audiocodec,DEV=0 ваша аудио карта.

Настройка пульта
Проверяем загрузку модуля sunxi_cir командой lsmod | grep lirc
root@orangepizero:/etc# lsmod | grep lirc
ir_lirc_codec           3677  3
lirc_dev                7834  1 ir_lirc_codec
rc_core                12727  10 ir_lirc_codec,ir_rc5_decoder,ir_nec_decoder,ir_sony_decoder,sunxi_cir,ir_mce_kbd_decoder,ir_jvc_decoder,ir_rc6_decoder,ir_sanyo_decoder
если вы этого не видете то  в /etc/modules  sunxi-cir раскомментируем

Также нужно удостовериться, что все работает, для этого нужно проверить, появилось ли устройство ввода
Выполняем команду evtest

root@orangepizero:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:   vmouse
/dev/input/event1:   sunxi-ths
/dev/input/event2:   sunxi-ir
/dev/input/event3:   MCE IR Keyboard/Mouse (sunxi-ir)
Select the device event number [0-3]:

Выбираем sunxi-ir по номер event’a в моем случае 2

Нажимаем кнопки на пульте

Select the device event number [0-3]: 2
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "sunxi-ir"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 152 (KEY_SCREENLOCK)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    500
    Repeat code 1 (REP_PERIOD)
      Value    125
Properties:
Testing ... (interrupt to exit)
Event: time 1520428697.980497, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10
Event: time 1520428697.980505, -------------- EV_SYN ------------
Event: time 1520428698.093675, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10
Event: time 1520428698.093685, -------------- EV_SYN ------------
Event: time 1520428698.681997, type 4 (EV_MSC), code 4 (MSC_SCAN), value 0d
Event: time 1520428698.682007, -------------- EV_SYN ------------
Event: time 1520428698.795144, type 4 (EV_MSC), code 4 (MSC_SCAN), value 0d
Event: time 1520428698.795156, -------------- EV_SYN ------------
Event: time 1520428699.102313, type 4 (EV_MSC), code 4 (MSC_SCAN), value fd18
Event: time 1520428699.102322, -------------- EV_SYN ------------
Event: time 1520428700.116441, type 4 (EV_MSC), code 4 (MSC_SCAN), value fd16
Event: time 1520428700.116452, -------------- EV_SYN ------------

Остановить проверку Ctrl+C

Далее переходим к настройке пульта

выполняем в консоли
service lirc stop
rm /etc/lirc/lircd.conf
irrecord --disable-namespace -H default -d /dev/lirc0 /etc/lirc/lircd.conf

irrecord предложит нажать на  кнопки нажимаем на кнопки, пока две линии точек не считаются.

Далее поочередно обзываем все кнопки пульта и жмакаем их. Когда закончили — просто нажали ENTER. Потом вас попросят как можно быстрее понажимать одну из введенных кнопок. irrecord создаст файл /etc/lirc/lircd.conf.

Для проверки LIRC’a служит утилитка irw — при ее запуске в терминале при нажатии на клавишу пульта отображается название клавиши и её управляющий код.

service lirc start
irw /dev/lircd
0000000000000001 00 volup pult
0000000000000002 00 voldown pult
0000000000000003 00 next pult
0000000000000004 00 pause pult
0000000000000005 00 prev pult
0000000000000006 00 mute pult

Далее требуется настроить команды, которые будут выполнятся, при нажатии кнопок пульта, они  указываются в файле /etc/lirc/lircrc

мой файл lircrc
begin
    prog = irexec
    remote = pult
    button = power
    config = lmscli.exp power
    # config = reboot
end
begin
    prog = irexec
    remote = pult
    button = pause
    repeat = 1
    config = lmscli.exp pause
end

begin
    prog = irexec
    remote = pult
    button = volup
    repeat = 1
    config = lmscli.exp volup
end

begin
    prog = irexec
    remote = pult
    button = voldown
    repeat = 1
    config = lmscli.exp voldown
end

begin
    prog = irexec
    remote = pult
    button = shuffle
    repeat = 0
    config = lmscli.exp shuffle
end

begin
    prog = irexec
    remote = pult
    button = prev
    repeat = 0
    config = lmscli.exp prev
end

begin
    prog = irexec
    remote = pult
    button = next
    repeat = 1
    config = lmscli.exp next
end

begin
    prog = irexec
    remote = pult
    button = mute
    repeat = 1
    config =  lmscli.exp muteon
end

 
Код файла  lmscli.exp, его я разместил в /usr/local/bin
#!/usr/bin/expect -f

# lmscli "Expect" script
# Author:       Paul Webster
# Version:      0.1
# Date: 29-Mar-2014
##
# Simple script (with no error checking) to send Logitech Media Server (SqueezeCenter) CLI commands to control a player
# Attempts to read parameters from Squeezelite defaults file - where syntax is
# keyword="value"
#
# "Expect" and telnet are required
# sudo apt-get install expect telnet
# Also - if this is to be driven via infrared remote (expected use) then also install lirc
# sudo apt-get install lirc
#

set settingsfile /etc/default/squeezelite

# Defaults
# Values here are overridden by values found in /etc/default/squeezelite (if present)
# SBSHOST = ip address of the LMS/Squeezebox Server
# SBSPORT = port number on LMS that cli runs on (rarely changed)
# SLMAC = the MAC address claimed by the player to be controlled - not always the real MAC address and is specified to Squeezelite
# SBSUSER / SBSPASS = username and password to access LMS. Usually not configured - in which case leave as is
# - if used then make sure that the user/pass fields are URL-encoded (e.g. %20 for space)
array set params {
    SBSHOST     127.0.0.1
    SBSPORT     9090
    SLMAC       12:42:b2:9d:c7:30
    SBSUSER     user
    SBSPASS     pass
}

# Override the defaults that are in this script with the ones from the Squeezelite settings
if {[file exists "$settingsfile"]} {
    set fp [open "$settingsfile" r]
    set file_data [read $fp]
    close $fp

    # get lines
    set data [split $file_data "\n"]
    foreach line $data {
        #parse lines for config data
        if {[regexp {^(\w+)\s*=\s*[\"|](.*)[\"|]} $line -> name value]} {
            # puts "found name of \"$name\" with value \"$value\""
            set params($name) $value
        }
    }
}

# puts "settings: host:\"$params(SBSHOST)\" and player MAC:\"$params(SLMAC)\""
# The settings are now in place

set arg1 [lindex $argv 0]
set arg2 [lindex $argv 1]

# puts "recieved arguments of \"$arg1\" and \"$arg2\""
spawn telnet $params(SBSHOST) $params(SBSPORT)
expect "Escape character is *"
send "login $params(SBSUSER) $params(SBSPASS)\n"
expect "login user"


switch $arg1 {

pause   {
                send "pause\n"
                expect "* pause"
        }

bb      {
                send "time -10\n"
                expect "* time"
        }

ff      {
                send "time +10\n"
                expect "* time"
        }

muteoff {
                send "mixer muting 0\n"
                expect "* mixer muting"
        }

muteon  {
                send "mixer muting 1\n"
                expect "* mixer muting"
        }

next    {
                send "playlist index +1\n"
                expect "* playlist index"
        }

prev    {
                send "playlist index -1\n"
                expect "* playlist index"
        }

power   {
                send "power\n"
                expect "* power"
        }

voldown {
                send " mixer volume -2.5\n"
                expect "* mixer volume"
        }

volup   {
                send " mixer volume +2.5\n"
                expect "* mixer volume"
        }

shuffle {
                send "playlist shuffle\n"
                expect "* playlist shuffle"
        }

repeat  {
                send "playlist repeat\n"
                expect "* playlist repeat"
        }

stop    {
                send "stop\n"
                expect "* stop"
        }

ok      {       #Restore to base values
                send "playlist repeat 0 1\n"
                expect "* playlist repeat"
                send "playlist shuffle 0\n"
                expect "* playlist shuffle"
                send "mixer volume 50\n"
                expect "* mixer volume"
                send "mixer muting 0\n"
                expect "* mixer muting"
                send "power 1\n"
                expect "* power"
}

default {puts "Unknown command issued to lmscli"}

}
# End of switch (do not put on same line as the closing brace)

send "exit\n"
expect eof

На этом настройка пульта выполнена
« Последнее редактирование: Май 17, 2019, 01:13:07 pm от UB3GAD »
Orange Pi PC
Raspberry pi 3
Odroid C0

Оффлайн UB3GAD

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #167 : Март 07, 2018, 03:45:38 pm »
Настройка дисплея
файл /etc/LCDd.conf  привести к виду

[server]
DriverPath=/home/lcdproc/
#DriverPath=/usr/lib/arm-linux-gnueabihf/lcdproc/ # Note
Driver=hd44780
#Bind=127.0.0.1   # doesn't need for i2c module'
#Port=13666       # doesn't need for i2c module'
User=nobody
Hello="LMS"
WaitTime=1
ServerScreen=no

[hd44780]
ConnectionType=i2c
Device=/dev/i2c-0 # make this i2c-0 for Revision 1 Pi's'
OutputPort=no
Port=0x27        # replace to your i2c address
Backlight=no      # I didn't use Balcklight'
Size=20x4         # 16x2 or ?
DelayBus=false
DelayMult=5
Keypad=no
#CharMap=hd44780_cp1251
#
# edit the pin configurations for your i2c module (Note2)
i2c_line_RS=0x01
i2c_line_RW=0x02
i2c_line_EN=0x04
i2c_line_BL=0x08
i2c_line_D4=0x10
i2c_line_D5=0x20
i2c_line_D6=0x40
i2c_line_D7=0x80

Где Port=0x27   адрес дисплея его можно узнать командой
 sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- --

Драйвер дисплея hd44780.so  у меня лежит в /home/lcdproc

Для вывода информации с LMS я использую скрипт lcd_lms.pl
формат запуска lcd_lms.pl имя плеера

Во вложении лежат hd44780.so и  lcd_lms.pl
« Последнее редактирование: Март 07, 2018, 03:50:40 pm от UB3GAD »
Orange Pi PC
Raspberry pi 3
Odroid C0

Оффлайн joshua

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #168 : Март 12, 2018, 01:07:34 am »
Доброго времени суток
Подскажите
 на Orange Pi Zero  установлена DietPi
под ней LMS + Squeezelite
на сайте Squeezelite зарегистрированна учетка.

таких коробок есть две

одна из них на сайте в разделе плееры - появляется, вторая - нет
вход в учетную запись выполнен
как исправить чтоб обе коробки там были?
спасибо

Оффлайн ua3nbw

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #169 : Март 12, 2018, 08:58:54 am »
одна из них на сайте в разделе плееры - появляется, вторая - нет
вход в учетную запись выполнен
как исправить чтоб обе коробки там были?
спасибо
А squeezelite с опцией -m запускаете ?
пример:
squeezelite-armv6hf -o hw:CARD=audiocodec,DEV=0 -n AUD_Orangeri -m 00:00:00:00:00:01
у каждого плеера MAC адрес должен быть оригинальным.

Оффлайн joshua

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #170 : Март 12, 2018, 05:37:38 pm »
Цитировать
А squeezelite с опцией -m запускаете ?
простите, а в dietpi  как это сделать? оно там в конфиге после установки все само запускается

Оффлайн ua3nbw

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #171 : Март 12, 2018, 07:32:35 pm »
Цитировать
А squeezelite с опцией -m запускаете ?
простите, а в dietpi  как это сделать? оно там в конфиге после установки все само запускается
у меня не dietpi, опции с которыми собран squeezelite посмотрите:
squeezelite --help
если squeezelite поддерживает -m, то добавьте в строку ExecStart -m 00:00:00:00:00:01 в файл
/etc/systemd/system/squeezelite.service и сделайте  systemctl daemon-reload

Оффлайн errik

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #172 : Сентябрь 16, 2018, 06:46:51 pm »
помогите! что случилось сервером https://mysqueezebox.com/player/addPlayer
Oops! You don't appear to have any players registered to this account.
невидит моих плееров ((((
https://forums.slimdevices.com/showthread.php?105461-Please-read-software-players-amp-mysqueezebox-com
если я понял что там написано... теперь для софтплееров сервис больше недоступен ??? ((((

Оффлайн errik

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #173 : Февраль 05, 2019, 09:43:14 am »
с сервером и пропавшим  плеерами  решилось, запуском в сервере LocalPlayer
еще оч понравился пульт Squeeze Ctr рекомендую
squeezer удобный простой не неправильно работает с ickStream (((
SqueezeCommander тупо неудобный, нелогичный интерфейс

еще вот такой нашел самый дешовый dlna плеер, подключился через plugin dlna
вывод звука через 3.5мм или hdmi
« Последнее редактирование: Февраль 05, 2019, 09:46:44 am от errik »

Оффлайн UB3GAD

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #174 : Апрель 02, 2019, 05:22:19 pm »
Возникла  странная проблема не могу запустить squeezelite-armv6hf
имею orangepipc plus, система armbian, ядро 4.19.20-sunxi


squeezelite-armv6hf -l
Output devices:
  null                           - Discard all samples (playback) or generate zero samples (capture)
  default                       
  dsp0                         
  dmixer                       
  sysdefault:CARD=Codec          - H3 Audio Codec,  - Default Audio Device
  dmix:CARD=Codec,DEV=0          - H3 Audio Codec,  - Direct sample mixing device
  dsnoop:CARD=Codec,DEV=0        - H3 Audio Codec,  - Direct sample snooping device
  hw:CARD=Codec,DEV=0            - H3 Audio Codec,  - Direct hardware device without any conversions
  plughw:CARD=Codec,DEV=0        - H3 Audio Codec,  - Hardware device with all software conversions

При выборе любого значения отличного от null получаю
# squeezelite-armv6hf -o hw:CARD=Codec,DEV=0
[17:21:54.834404] test_open:124 playback open error: Device or resource busy
[17:21:54.834671] output_init_common:373 unable to open output device

Звук а armbian-config включен
« Последнее редактирование: Апрель 02, 2019, 05:34:42 pm от UB3GAD »
Orange Pi PC
Raspberry pi 3
Odroid C0

Оффлайн ua3nbw

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #175 : Апрель 03, 2019, 12:42:01 pm »
а команда speaker-test -c 2 отрабатывает ?
если ошибка Device or resource busy ищите кто занял звуковую.
может pulseaudio инсталлирован ?

squeezelite-armv6hf можно так запустить:
squeezelite-armv6hf -o hw:CARD=Codec,DEV=0 -d all=debug -f /var/log/squeezeboxserver/localplayer.log 

и посмотреть ошибки в логе.

Оффлайн UB3GAD

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #176 : Апрель 03, 2019, 01:17:18 pm »
а команда speaker-test -c 2 отрабатывает ?
если ошибка Device or resource busy ищите кто занял звуковую.
может pulseaudio инсталлирован ?

squeezelite-armv6hf можно так запустить:
squeezelite-armv6hf -o hw:CARD=Codec,DEV=0 -d all=debug -f /var/log/squeezeboxserver/localplayer.log 

и посмотреть ошибки в логе.
speaker-test -c 2

speaker-test 1.1.3

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Playback open error: -2,Нет такого файла или каталога

squeezelite-armv6hf -o hw:CARD=Codec,DEV=0 -d all=debug -f /var/log/squeezeboxserver/localplayer.log
[13:16:40.257556] stream_init:290 init stream
[13:16:40.257919] stream_init:291 streambuf size: 2097152
[13:16:40.260336] output_init_alsa:643 init output
[13:16:40.260522] output_init_alsa:666 requested alsa_buffer: 40 alsa_period: 4 format: any mmap: 1
[13:16:40.260600] output_init_common:342 outputbuf size: 3528000
[13:16:40.265642] ALSA snd_pcm_hw_open:1602 open '/dev/snd/pcmC0D0p' failed (-16)
[13:16:40.265847] test_open:124 playback open error: Device or resource busy
[13:16:40.265930] output_init_common:373 unable to open output device


pulseaudio не установлен, грешу на поднятую систему  majordomo
« Последнее редактирование: Апрель 03, 2019, 01:39:04 pm от UB3GAD »
Orange Pi PC
Raspberry pi 3
Odroid C0

Оффлайн ua3nbw

Re: Сетевой аудиоплеер OrangePi PC
« Ответ #177 : Апрель 03, 2019, 04:07:50 pm »
pulseaudio не установлен, грешу на поднятую систему  majordomo
там Алиса юзает audio.
Смотрите например :Настройка dmix для одновременного проигрывания звука из разных программ
тут обсуждали http://orangepi.pp.ua/index.php/topic,173.60.html
на форуме  majordomo наверно есть  простое решение. они  squeezelite вроде активно используют.
https://mjdm.ru/forum/viewtopic.php?f=8&t=3513&p=42519&hilit=squeezelite#p42519
« Последнее редактирование: Апрель 03, 2019, 04:23:23 pm от ua3nbw »