Страница 1 из 3 123 Последняя
Показано с 1 по 20 из 56

Тема: Одноплатник в качестве bluetooth- и DLNA-ресивера

  1. #1
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Одноплатник в качестве bluetooth- и DLNA-ресивера

    Глава 1. Bluetooth

    Захотелось на днях собрать bluetooth-адаптер для удобной передачи аудио-потока с мобильника на стереосистему. В основном ради аудиокниг для ребёнка, но не только (стоило сделать до каникул, ага).

    Готовую bluetooth-плату с Али брать не хотелось, т. к. 99% - шлак в плане качества звука. Есть варианты с i2s-выходом, но у меня сейчас нет под рукой ЦАПа, к которому можно подключить i2s без колхоза. Зато есть USB-шный.
    Посему решил попробовать собрать то же самое на каком-нить недорогом одноплатнике с Linux. В качестве бонуса есть желаение на нём же поднять DLNA-renderer для полноценного беспотерьного аудио, но это в следующей серии (похоже геморроя будет, как ни странно, больше).

    Кратко опишу процесс, может поможет кому-нибудь. А может и мне самому через годик-другой

    0. Платку взял OrangePi zero2. Причины: недорогая, достаточная производительная (4 ядра Cortex-A53), достаточно ОЗУ (1ГБ), на борту есть необходимые мне интерфейсы: WiFi5/BT5 (есть даже надежда на нормальный coexistence), 1Gb ethernet, USB2-host (один нормальный, ещё пара на гребёнке), serial console, кучка GPIO. Хватит в т. ч. на некоторую перспективу.

    1. Попробовал избежать китайских образов и поставить православный Armbian. С ходу не взлетел WiFi, и нестабильно определялся установленный объём ОЗУ. Разбираться было лень, так что вернулся на штатный китайсктй образ. Пошёл по пути наименьшего сопротивления и залил самый свежий из доступных у производителя вариант Ubuntu server, на сегодня это jammy с ядром 5.16.17.

    2. Подключился через serial console через переходничок USB-UART: под виндой вроде можно через putty, либо hyperterminal (если кто-то такое ещё помнит). Настроил wifi: из orangepi-config в моей терминальной программе было жутко неудобно, поэтому сделал через nmcli.
    Дальше вся работа шла по ssh.
    Если удобно подключить плату через ethernet, то можно обойтись без serial console и WiFi.

    3.
    Код:
    sudo apt update && sudo apt upgrade
    Если этого не сделать, то со старой версией bluez всё будет несколько иначе.

    4. (Написано неразборчивым почерком) ...что-то понажимал в утилитах настройки bluetooth, чтобы устройство было всегда pairable и discoverable, то ли в bluetoothctl, то ли ещё где.

    5. Нужно добиться спаривания внешних устройств с нашей апельсинкой. За авторизацию (пин коды и вот это всё) отвечают т. н. bluetooth agent*ы. Тот, что встроен в bluez, даже если сказать ему NoInputNoOutput, даёт спариться, но начинает сыпать в консоль вопросы при подключении A2DP-сервиса. Отвечать на эти вопросы будет некому, так что не годится.
    Ставим bluez-tools (sudo apt install bluez-tools) и используем его агент. Для этого пришлось сделать простой systemd-сервис, а именно создать в /usr/lib/systemd/system/ файлик bt-agent.service следующего содержания:
    Код:
    [Unit]
    Description=bt-agent unattended service
    After=dbus-org.bluez.service
    Requires=dbus-org.bluez.service
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
    Restart=on-failure
    KillSignal=SIGKILL
    
    [Install]
    WantedBy=bluetooth.target
    Теперь вызываем
    Код:
    sudo systemctl daemon-reload
    sudo systemctl enable bt-agent.service
    У bt-agent есть ещё ключик -d (daemonize), но с ним у меня почему-то не взлетало.

    6. Теперь нужно установить нечто, что будет принимать поток из bluez, декодировать его и отправлять в alsa-устройство. Это нечто называется bluealsa (она же bluez-alsa). Но штатная в Убунте не умеет в aptX, AAC и тому подобные модные кодеки, только унылый SBC. Искать готовые сборки - не спортивно, так что идём во все тяжкие...

    Код:
    sudo apt install git libglib2.0-dev libdbus-1-dev automake build-essential libtool pkg-config python3-docutils autotools-dev libtool pkg-config gcc binutils libasound2-dev libbluetooth-dev libopenaptx-dev libsbc-dev libfdk-aac-dev libmp3lame-dev
    Последние четыре пакета опциональны, но с конфигурацией сборки, которая будет ниже, они нужны.
    Вроде ничего не забыл.
    Собираем и устанавливаем...
    Код:
    git clone https://github.com/Arkq/bluez-alsa.git
    cd bluez-alsa
    autoreconf --install --force
    mkdir build
    cd build
    ../configure --with-libopenaptx --enable-aptx --enable-aptx-hd --enable-aac --enable-mp3lame --enable-systemd
    make
    sudo make install
    7. Выясняем имя alsa-устройства, в которое будем выводить звук. Например, с помощью команды aplay -L
    У меня это plughw:CARD=Audio,DEV=0
    Оно нам потребуется на следующем шаге.
    Префикс plughw в этом автоматически созданном виртуальном устройстве означает, что будет использован плагин Alsa "plug" для автоматического преобразования формата потока.
    У меня без этого плагина не взлетало по причине несовместимости ЦАПа с битностью потока (не принимает 16 бит).
    Если нужна передискретизация, то вроде надо ещё что-то подкрутить, т. к. по дефолту ресемплер хуже некуда. Мне не надо, поэтому не копал.

    8. Подправляем файлик /usr/lib/systemd/system/bluealsa-aplay.service , а именно ищем там строку, начинающуюся с ExecStart=/usr/bin/bluealsa-aplay и меняем её на
    Код:
    ExecStart=/usr/bin/bluealsa-aplay -S -D "plughw:CARD=Audio,DEV=0"
    Имя устройства, естественно, подставьте своё.

    9. Подправляем файлик /usr/lib/systemd/system/bluealsa.service , а именно ищем там строку, начинающуюся с ExecStart=/usr/bin/bluealsa и меняем её на
    Код:
    ExecStart=/usr/bin/bluealsa -S -p a2dp-sink --codec=aptX --codec=aptX-HD
    То есть оставляем только a2dp-приёмник.

    10. Выполняем
    Код:
    sudo systemctl daemon-reload
    sudo systemctl enable bluealsa.service
    sudo systemctl enable bluealsa-aplay.service
    Возможно, делать enable и не требуется, но не помешает.

    11. Вроде всё.
    sudo reboot now
    И должно взлететь если до этого не было ошибок.

    Мой дешманский китайфон успешно транслирует звук в AAC.
    Инструментальную оценку качества пока не делал, а на слух моя текущая система не позволит что-либо оценить. Да и поздно уже

    Имейте ввиду, безопасности никакой!
    Кто угодно может в любой момент подключиться к настроенному таким образом блютус-устройству и передать на него смертельный зомбирующий убивающий пищалку сигнал.

    Глава 2. Микширование и ресемплинг в Alsa
    Раз уш надумал прикрутить ещё и DLNA, значит придётся микшировать несколько потоков от разных устройств. Конечно, можно решить вопрос административно и запрещать родным и гостям подключаться одновременно. Но всё равно будут случаи когда кто-то нажмёт на паузу, а плеер продолжит транслировать тишину. Я недостаточно деспотичен, чтобы наказывать за такие проступки
    Да и в рамках единственного Bluetooth-интерфейса подобный ситуации возможны. Значит делаем.

    Как это должно работать:
    - Каждый звуковой поток нужно передискретизировать в одну и ту же частоту (любую, но одинаковую).
    - Все потоки микшируем (при равных частотах дискретизации это просто сложение семплов) и выводим на нужное звуковое устройство.

    Обойтись без передискретизации можно, но во-первых, сложнее, а во-вторых, будут ограничения в удобстве. Я так не хочу.

    1. Выбираем подходящую частоту дискретизации. У меня 99% материала (который я хочу воспроизводить качественно) записан с частотой 44.1кГц. Но я сторонник удвоения частоты дискретизации (первая ступень цифровой фильтрации) на ПК, поэтому ставлю 88.2кГц. Впрочем, немногочисленный материал в 96 и 192кГц вполне неплохо (на слух) передискретизируется в 88.2к, поэтому тоже норм.

    2. Создаём файл /etc/asound.conf и прописываем туда следующее:

    Код:
    pcm.dmix_usb88k2 {
        type dmix
        ipc_key 6734782  # any unique value
        ipc_key_add_uid false
        ipc_perm 0666
        slave {
            pcm "hw:CARD=Audio,DEV=0"
            format S32_LE
            rate 88200
            channels 2
        }
    }
    
    pcm.usb88k2 {
        type plug
        slave {
            pcm "dmix_usb88k2"
            rate 88200
        }
        rate_converter "speexrate_medium"
        hint {
             show on
             description "Out to Sonata USB with dmix and decent SRC to 88k2"
        }
    }
    Синтаксис конфигов Alsa совершенно наркоманский, поэтому немного разберу.
    - Создаём виртуальное устройство dmix_usb88k2, микширующее сигналы (type dmix). Присваиваем уникальный ID, делаем его одинаковым для всех пользователей и даём доступ всем пользователям к соответствующему объекту в ОЗУ. Вывод результата микширования производится в устройство hw:CARD=Audio,DEV=0 ("hw.", то есть напрямую в железку без каких-либо преобразований). Устройство поддерживает разные форматы семплов и частоты дискретизации, поэтому явно их указываю. У вас, конечно, устройство будет другое. Метод передискретизации - "speexrate_medium", работает на слух нормально. Загрузка процессора что-то около 12% одного ядра. Можно поставить "speexrate_best" (лучше в Alsa вроде нет), но тогда загрузка будет великовата (60+), поэтому остался на этом.
    - Дальше создаю второе виртуальное устройство usb88k2, осуществляющее при необходимости передискретизацию (plug). Передискретизируем в 88.2кГц и выводим результат в микшер (устройство созданное перед этим).

    3. Прописываем устройство usb88k2 в файл /usr/lib/systemd/system/bluealsa-aplay.service.

    4. Выполняем sudo systemctl daemon-reload, перезагружаемся.

    Глава 3. DLNA-renderer

    Не знаю, каким местом я гуглил в прошлый раз, но сейчас с ходу нашёлся расово верный опенсорсный DLNA-renderer - gmediarender.

    1. sudo apt install gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gmediarender

    2. Вариант со штатным запуском через init.d у меня не взлетел (судя по всему, из за долгой инициализации WiFi-сети). В тонкой настройке init.d я не копенгаген, поэтому сделал systemd-службу на основе конфига от автора. Штатные конфиги для init.d не мешают, т. к. при таком же имени службы systemd имеет бОльший приоритет. Создаём файл /usr/lib/systemd/system/gmediarender.service и пишем в него следующее:
    Код:
    [Unit]
    Description=gmrender-resurrect service
    After=network-online.target sound.target
    
    StartLimitIntervalSec=20
    StartLimitBurst=50
    
    [Service]
    Environment="UPNP_DEVICE_NAME=MyBestInTheUniverseDlnaRenderer"
    ExecStartPre=/bin/sh -c "/bin/systemctl set-environment UPNP_UUID=`ip link show | awk */ether/ {print \"salt:)-\" $2}* | head -1 | md5sum | awk *{print $1}*`"
    ExecStartPre=/bin/sh -c "ip r | grep default"
    
    ExecStart=/usr/bin/gmediarender -f "$UPNP_DEVICE_NAME" -u "$UPNP_UUID" \
                                          --gstout-audiosink=alsasink --gstout-audiodevice=usb88k2 \
                                          --logfile=/tmp/gmediarenderer.log --gstout-initial-volume-db=0
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    После UPNP_DEVICE_NAME= можно указать своё имя DLNA-renderer*а, а после --gstout-audiodevice= - имя alsa-устройства.
    Строку --logfile=/tmp/gmediarenderer.log можно убрать. Но если ОЗУ в избытке, то можно и оставить.
    Строка ExecStartPre=/bin/sh -c "ip r | grep default" выкидывает ошибку если в системе еще нет шлюза по умолчанию (обычно это означает, что локалка не работает). Без этого грязного хака не получалось заставить стабильно работать DLNA с единственным WiFi-подключением.

    3. Выполняем
    Код:
    sudo systemctl enable gmediarender.service
    sudo systemctl start gmediarender.service
    Всё. Перезагружаемся и проверяем.
    Теперь можно использовать наш одноплатник как полноценную часть DLNA-системы (с блекджеком, медиасервером и контроллером).
    Если вы используете Линукс на ПК, то можно и просто транслировать на нашу платку звуковой поток. Для этого ставим на ПК пакет pulseaudio-dlna и запускаем его, например так: pulseaudio-dlna --codec=flac (последний аргумент говорит, что кодировать звук надо не в mp3, а во flac). Он сам найдёт в сети все renderer*ы и создаст для каждого из них pulseaudio-устройство. Когда начнёте выводить в него звук - запустится воспроизведение звука на одноплатнике (в "простое" Alsa-устройство на нём не будет занято).
    Последний раз редактировалось Meta|_; 27.01.2023 в 00:42.
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  2. #2
    Завсегдатай Аватар для mellowman
    Регистрация
    14.04.2009
    Адрес
    рядом с Москвой
    Сообщений
    4,447

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    В алсе советую проверить что нет ресемплинга 48<->44.1. Давно не пробовал, но году в 2011 он был ужасный, муть слышно сразу в слепом тесте (не слишком научном, т.к. сложно изолировать всё), как 96кбпс мп3.

    Ну и bluez можно попробовать ставить с убунтушными патчами через apt-get source. Хотя если работает, то может и не нужны они

  3. #3
    Новичок Аватар для Adson
    Регистрация
    07.11.2007
    Адрес
    Москва
    Возраст
    57
    Сообщений
    44

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Спасибо за интересную информацию.
    А в качестве ресивера с кодеком LDAC такое можно замутить? Вроде какие-то версии bluez так позволяли.
    И на всякий случай (вдруг получится) - в качестве трансмиттера?

  4. #4
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от mellowman Посмотреть сообщение
    В алсе советую проверить что нет ресемплинга 48<->44.1
    Да, я вскользь упомянул, что это может потребоваться, но у меня на ЦАП всё уходит без ресемплинга, так что не напрягался. Попадос ожидается при воспроизведении разных частот с разных устройств, но это нетиповой сценарий, его еще не проверял.

    Цитата Сообщение от Adson Посмотреть сообщение
    А в качестве ресивера с кодеком LDAC такое можно замутить?
    Вроде Тётя Соня не делилась исходниками декодера, поэтому нет. Передавать LDAC-поток можно, принимать нельзя.

    Цитата Сообщение от Adson Посмотреть сообщение
    И на всякий случай (вдруг получится) - в качестве трансмиттера?
    Не проверял, но судя по всему, передача (SBC и LDAC) должна работать из коробки в Убунтовской (22.04) сборке bluez-alsa. Не исключено, что "одной мышкой" получится сделать
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  5. #5
    Частый гость Аватар для Chaa
    Регистрация
    23.08.2006
    Адрес
    Курган
    Сообщений
    317

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Вроде Тётя Соня не делилась исходниками декодера, поэтому нет. Передавать LDAC-поток можно, принимать нельзя.
    Если очень хочется, то можно и принимать:
    https://github.com/anonymix007/libldacdec

    Но пока пишут, что не очень стабильно и от телефона зависит.

  6. #6
    Завсегдатай Аватар для Ломатель
    Регистрация
    23.01.2006
    Адрес
    г.Орел
    Возраст
    33
    Сообщений
    1,123

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    А почему не готовую плату с Али с spdiff выходом? Которая и в aptx hd умеет и в ldac. Такие на алишке есть.

    ---------- Сообщение добавлено 15:21 ---------- Предыдущее сообщение было 15:20 ----------

    Или цель именно выход на USB ?
    Денис.

  7. #7
    Завсегдатай Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    49
    Сообщений
    3,160

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Meta|_, проект огонь. Не смотрел, насколько ресурсоемки кодеки? Давно зреет мысль замутить блютус ресивер на ESP32 (с выходом по квадратной шине). ESP32 - минимальные габариты и потребление, доступность.

    Цитата Сообщение от Ломатель Посмотреть сообщение
    А почему не готовую плату с Али
    И перебирать до посинения, какая работает без глюков. Как увидел исходники кодеков на гитхабе, так весь интерес с готовому мгновенно пропал.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  8. #8
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от Ломатель Посмотреть сообщение
    Или цель именно выход на USB ?
    Прямо сейчас хотел USB и без колхоза. Найти хорошую плату на Али - тот ещё квест, а если захочется кастомизировать, то порог вхождения в соответствующие прошивки высоковат, не хочется тратить время.

    Цитата Сообщение от Openreel Посмотреть сообщение
    Не смотрел, насколько ресурсоемки кодеки? Давно зреет мысль замутить блютус ресивер на ESP32
    - Смотрел. Единицы процентов одного ядра, ОЗУ занято на ~15%. Планирую brutefir там же запустить.
    - Про esp32 тоже думал. Можно сделать очень красиво, в том смысле что ничего лишнего. Но там велик риск встрять с сырым SDK.
    Кстати, вариант чипа с USB у espressif тоже есть, но только full-speed и UAC придётся велосипедить самостоятельно.
    Последний раз редактировалось Meta|_; 10.01.2023 в 16:57.
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  9. #9
    Завсегдатай Аватар для uriy61
    Регистрация
    02.07.2013
    Адрес
    Москва
    Сообщений
    2,080

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера


    Offтопик:
    Купил две платы на Али: одна на QCC5125+ESS9023 (LDAC и ниже), другая на QCC3034+ESS9023 (ArtX-HD и ниже). Коммутация в платах автоматическая на реле с позолоченными контактами. Одну встроил в отдельную коробочку с линейным бп, другую в свой ЦАП. Звук - понравился. В паузах шипения и щелчков - нет. Имею ВТ-колонку Denon, подключил к ней отдельную коробочку - звучит лучше, чем от встроенного ВТ-модуля. И это с iPhone XR, у которого нет ни ArtX-HD, ни тем более LDAC, только SBS и ААС.
    Нажмите на изображение для увеличения. 

Название:	1C7DD5AF-0D20-4250-BD01-2B2B49ACB7D1.jpeg 
Просмотров:	77 
Размер:	1.90 Мб 
ID:	429131Нажмите на изображение для увеличения. 

Название:	B1FD21D0-BBBB-465D-A582-0BE1EACBE781.jpeg 
Просмотров:	75 
Размер:	2.67 Мб 
ID:	429132Нажмите на изображение для увеличения. 

Название:	7E374F18-B924-47D7-8318-7654C1384147.jpeg 
Просмотров:	109 
Размер:	3.07 Мб 
ID:	429133

  10. #10
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от Chaa Посмотреть сообщение
    Если очень хочется, то можно и принимать:
    https://github.com/anonymix007/libldacdec
    О, хорошо. Значит скоро подтянется поддержка.

    Цитата Сообщение от Openreel Посмотреть сообщение
    Давно зреет мысль замутить блютус ресивер на ESP32
    Блютус - штука хорошая, но эта возня с кодеками портит всю малину. Вот если получится вариант с DLNA-renderer*ом (то есть смогу реализовать и будет удобно его использовать), то может тоже попробую впихнуть это в ESP32. Такая комбинация нравится тем, что закрывает все мыслимые юзкейсы: совместимость с любыми мобильными устройствами по BT и возможность передавать любой поток без потерь по DLNA.

    uriy61, если бы не было желания накрутить на эту платку больше фич (о brutefir и DLNA-renderer уже писал) - возможно, пошёл бы по Вашему пути. А сделать перечисленное на одноплатнике, но при этом ставить блютус отдельным модулем - как-то не по фен-шую

    Offтопик:
    PS: Девайс красивый, но орфография на кожухе портит всё впечатление...
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  11. #11
    Завсегдатай Аватар для Ломатель
    Регистрация
    23.01.2006
    Адрес
    г.Орел
    Возраст
    33
    Сообщений
    1,123

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Dlna мне показался не удобным для стриминга.
    Bluetooth, Chromecast, AirPlay - вот что надо.

    ---------- Сообщение добавлено 02:54 ---------- Предыдущее сообщение было 02:50 ----------

    Последние два вроде как даже Lossless могут быть.
    Денис.

  12. #12
    Частый гость Аватар для Chaa
    Регистрация
    23.08.2006
    Адрес
    Курган
    Сообщений
    317

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Если есть iPhone в хозяйстве, то самый удобный AirPlay (работает через WiFi, может Lossless), под Linux называется Shairport Sync (https://github.com/mikebrady/shairport-sync).

    В качестве DLNA renderer можно попробовать APlayer, здесь есть про него большая тема.

  13. #13
    Частый гость Аватар для Chaa
    Регистрация
    23.08.2006
    Адрес
    Курган
    Сообщений
    317

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от SanSound Посмотреть сообщение
    Просто цены на одноплатники, я заметил, начинают улетать в облака и скоро это, видимо, будет совсем не вариант...
    Да не так чтобы все совсем уж плохо, вот у автора плата:
    https://aliexpress.ru/item/1005004358016241.html

    Но для начинающих проще будет Raspberry Pi 4 или Zero.

  14. #14
    Частый гость Аватар для DmitryU
    Регистрация
    18.07.2005
    Адрес
    Москва
    Сообщений
    269

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Интересная работа, спасибо!

    А можно ли сделать, чтобы по Bluetooth передача шла сразу на два устройства по одному каналу на каждое, как в TWS наушниках? Как это вообще делается?

  15. #15
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от Chaa Посмотреть сообщение
    Если есть iPhone в хозяйстве, то самый удобный AirPlay
    Айфонов-айпедов-макбуков нет. С Андройдов и Линуксов его транслировать в принципе тоже можно, но это противоречит моему представлению о прекрасном. Ладно ещё с одного конца использовать отреверсенный протокол, но с обоих - это слишком

    Цитата Сообщение от Chaa Посмотреть сообщение
    В качестве DLNA renderer можно попробовать APlayer
    О, спасибо, гуглом его не находил. Если не найду подходящего опенсорсного, то попробую.

    Цитата Сообщение от Chaa Посмотреть сообщение
    Но для начинающих проще будет Raspberry Pi 4 или Zero.
    Ммм... А чем проще?

    Цитата Сообщение от DmitryU Посмотреть сообщение
    А можно ли сделать, чтобы по Bluetooth передача шла сразу на два устройства по одному каналу на каждое
    По идее можно, но с передачей я вообще не возился. Только с приёмом.
    Но боюсь, даже если взлетит, с синхронизацией каналов всё будет грустно...
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  16. #16
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Re: Одноплатник в качестве bluetooth- и DLNA-ресивера

    Подправил по мелочи про блютус и дописал про микширование/передискретизацию средствами Alsa.
    Чуть позже опишу про DLNA.
    Ещё есть желание заняться безопасностью bluetooth. Конкретно, вроде несложно сделать что-то вроде WPS: нажал железную кнопку, включилась зелёная лампочка - можно один раз спариться. Но это потом
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

  17. #17
    Частый гость Аватар для Chaa
    Регистрация
    23.08.2006
    Адрес
    Курган
    Сообщений
    317

    По умолчанию Re: Одноплатник в качестве bluetooth- и DLNA-ресивера

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Ещё есть желание заняться безопасностью bluetooth. Конкретно, вроде несложно сделать что-то вроде WPS: нажал железную кнопку, включилась зелёная лампочка - можно один раз спариться. Но это потом
    Я добавил в /etc/bluetooth/main.conf значение DiscoverableTimeout = 300.
    То есть, если есть желание спариться с новым устройством, то выключаю-включаю, и дается пять минут.
    Вот тут писал: https://forum.vegalab.ru/showthread....10#post3021410

    Цитата Сообщение от Meta|_ Посмотреть сообщение
    Ммм... А чем проще?
    В китайских одноплатниках на старте рассыпан набор мелких граблей, которые человек опытный уже не замечает, а новичок может так на них и застрять навсегда.

  18. #18
    Завсегдатай Аватар для Михаил45
    Регистрация
    09.03.2007
    Адрес
    Санкт-Петербург
    Возраст
    62
    Сообщений
    2,124

    По умолчанию Re: Одноплатник в качестве bluetooth- и DLNA-ресивера

    Цитата Сообщение от Chaa Посмотреть сообщение

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

  19. #19
    Новичок Аватар для javaman
    Регистрация
    29.10.2021
    Адрес
    Барнаул
    Возраст
    47
    Сообщений
    3

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от Chaa Посмотреть сообщение
    Если очень хочется, то можно и принимать:
    https://github.com/anonymix007/libldacdec

    Но пока пишут, что не очень стабильно и от телефона зависит.
    Я на 3-й малине поднял этот LDAC с танцами с бубном, отписывался на гитхабе там автору о траблах. Работает нормально, андроид автоматически включает 32/96 и адаптивный битрейт - по факту получается примерно 700 кбит.
    В машине работает, как альтернатива USB-OTG, когда нужно зарядить телефон или включить ютуб ребенку.

  20. #20
    Завсегдатай
    Автор темы
    Аватар для Meta|_
    Регистрация
    08.03.2005
    Адрес
    Северная Голландия
    Возраст
    40
    Сообщений
    1,994

    По умолчанию Re: Одноплатник в качестве bluetooth-ресивера

    Цитата Сообщение от Chaa Посмотреть сообщение
    Я добавил в /etc/bluetooth/main.conf значение DiscoverableTimeout = 300.
    Думал об этом варианте, но не очень нра. Тем более, сейчас у меня апельсинка питается от усилителя, поэтому совсем некрасиво выйдет
    А за ссылку спасибо - читал но давно, забылось уже.

    Надо глянуть как GPIO проброшены в userspace, насколько удобно будет на кнопки реагировать. Но пока лень.

    Цитата Сообщение от Chaa Посмотреть сообщение
    В китайских одноплатниках на старте рассыпан набор мелких граблей, которые человек опытный уже не замечает, а новичок может так на них и застрять навсегда.
    Нууу... может я и правда чего-то не заметил, но вроде один в один всё по мануалу взлетело. Разве что образ писал dd-шкой а не какой-то рекомендованной графической утилитой.

    Цитата Сообщение от Михаил45 Посмотреть сообщение
    одроид, оранж, нанопи с памятью на плате не такие капризные
    На orangepi zero2 загрузка тоже только с microSD. Есть на борту 16-мегабитная NOR-flash, но загрузку с неё китайцы не сделали, да и нет большого смысла, всё равно кроме uboot туда ничего особо не влезет...
    Цитата Сообщение от javaman Посмотреть сообщение
    Работает нормально, андроид автоматически включает 32/96 и адаптивный битрейт - по факту получается примерно 700 кбит.
    Здорово.
    А если принудительно 44.1/16?
    Если тоже будет в районе 700кбит/с, то для большинства контента могло бы работать без потерь (белый шум максимального размаха некоррелированный по каналам - не в счёт).
    ∇·D = ρ
    ∇·B = 0
    ∇xE = – ∂B/∂t
    ∇xH = j + ∂D/∂t
    © J. C. Maxwell, O. Heaviside

Страница 1 из 3 123 Последняя

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •