Вместо предисловия.
Прошло довольно много времени с тех пор, как я начал эксперименты по созданию универсального источника, который мог бы заменить ПК или ноутбук, а также широко распространенные медиаплееры. Причин тому было множество. Начиная с того, что, как правило, компьютер или даже ноутбук не являются подходящими для меня с точки зрения шума, размера, специфики питания и некоторых других “железных” факторов, и заканчивая тем, что заводские устройства в виде медиаплееров не позволяют в большинстве своем модифицировать ПО внутри них без траты значительного количества свободного времени и ресурсов для изучения принципов работы встроенного ПО.Перепробовав некоторое количество вариантов на базе mini-itx решений, доступных на момент начала моих экспериментов, так и не было найдено оптимального, в силу все тех же вопросов шумности, питания, да и размеров в общем-то (тут как ни крути, без лишних усердий мне показалось проблематичным впихнуть устройство в составе жесткого диска внушительного объема, платы, блока питания в достаточно маленький корпус и при этом исключить перегрев компонентов). Было принято решение изучить возможность построения устройства на базе ARM. Первым делом были заказаны несколько плат Raspberry PI. В ходе экспериментов я был почти уверен, что нашел то, что мне нужно. Множество доступных вариантов ОС Linux под данную плату позволило выбрать наиболее легковесный и с наименьшим количеством постороннего софта. А выпиливать из дистрибутива тоже не хотелось. При этом, компоненты системы занимали небольшой объем, даже с линейным блоком питания, потребляли незначительное количество энергии и рассеивали минимум тепла. Но, к сожалению, наружу вылезла реализация USB в данном устройстве. Были надежды, что будет возможность побороть щелчки при воспроизведении установкой свежих патчей или посредством тюнинга параметров системы, но увы… Изначальная реализация в железе не исправляется софтом. В ряде случаев Raspberry стабильно работала в режиме USB1.1, что не позволяло задействовать возможности USB по выводу потока 192/24. А хотелось…
Девайс!
В ходе изучения альтернатив нашлось решение, которое позволило исключить не только проблемы воспроизведения Hi-Res, но и дало возможность избавиться от весомого недостатка Raspberry - отсутствия возможности подключить SATA диск непосредственно без дополнительных конвертеров SATA-USB. Как приятный бонус - увеличение скорости ввода-вывода и количества операций ввода вывода в секунду, что положительнвм образом сказалось на отклике системы. Например, обновление метаданных моей коллекции аудио общим объемом около 2TB на Raspberry занимало около 10 минут, на новой плате время уменьшилось до 30 секунд. В довесок ко всему, я получил 2-ядерный процессор и больше памяти. Удручало отсутствие 1Gbit Ethernet, но с этим я согласился смириться.
Основная плата построена на базе Cortex-A7 в качестве CPU.
Блок питания устройства рассчитан на напряжение +5 (питание платы и линия на HDD 2.5/3.5") и +12в (HDD 3.5") с током до 2А (в случае использования 2.5" HDD потребление заметно ниже) для возможности подключения HDD требующих оба напряжения питания. Ток с запасом, т.к. во время старта HDD пик потребления.
Сзади корпуса расположены разъемы Ethernet и 2xUSB, сетевого питания, кнопка “мягкого” завершения работы.
Были приобретены платы для экспериментов с софтом и изучения возможностей. По ходу дела выстроилось понимание того, что хотелось реализовать первым делом.
- Устройство должно видеться в домашней сети как диск, чтобы не было мороки с переносом файлов записей;
- Устройство должно определяться и видеться в сети автоматически, получать адрес по DHCP от роутера;
- Устройство должно автоматически определять подключенный к USB ЦАП (usbaudio) и выводить данные на него;
- Устройство должно иметь возможность “мягкого” завершения работы, т.к. в основу была положена ос Linux не только из за возможных проблем вызванных “выдергиванием питания” как на обычных PC, но и из-за возможной потери данных и проблем с последующей загрузкой;
- Устройство должно иметь возможность управления воспроизведением с ноутбука, планшета, телефона (IOS/Android...), whatever;
- Устройство хотелось реализовать без импульсного БП;
- Отсутствие шума, нагрева, минимальное энергопотребление (опробована возможность установки torrent-клиента, чтобы устройство могло само выкачивать нужное) для круглосуточной работы.
- Возможность работы 2.5”, 3.5” жестких дисков.
- “Засыпание” HDD при простое.
Фичи:
Ogg Vorbis, FLAC, APE, Opus, WavPack, MP2, MP3, MP4/AAC, MOD, Musepack, wave и другие поддерживаемые FFmpeg.
Понимает ID3: ID3v1 and ID3v2, Vorbis Comments, MP4 Metadata.
Возможность поиска по метадате.
Буферизация трека в память перед проигрыванием (предовращает проблемы с воспроизведением в случе проигрывания с медленных устройств/сети).
Gapless playback.
Crossfading.
Плейлисты cue, m3u.
Ресемплинг.
Поддерживаемые кодеки:
Decoders plugins:
[mad] mp3 mp2
[vorbis] ogg oga
[oggflac] ogg oga
[flac] flac
[opus] opus ogg oga
[sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
[audiofile] wav au aiff aif
[dsdiff] dffпреобразование в PCM на лету не тянет проц
[dsf] dsfпреобразование в PCM на лету не тянет проц
[faad] aac
[wavpack] wv
[modplug] 669 amf ams dbm dfm dsm far it med mdl mod mtm mt2 okt s3m stm ult umx xm
[ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve
[pcm]
В качестве приемника на стороне цап выступает Bolero. Готовится чертеж корпуса, который позволит вместить плату мини-пк, плату стабилизатора БП, тороидальный трансформатор и жесткий диск.
В данный момент ведется работа над:
- Возможность настройки Ethernet, Wi-fi, параметров воспроизведения аудио через веб-интерфейс, параметров доступа по сети;
- OLED дисплей для отображения ниформации об альбоме/треке/времени/битрейте исходника (это уже отображается на клиентсокй части планшета/смартфона/пк)
- модификация под авто в качестве ГУ (устройство компактное, а с установкой SSD вместо HDD, вообще толерантное к вибрациям)
Думаю, много говорить о возможностях реализации чего-либо на базе Linux не имеет смысла. Поле ограничено лишь фантазией и временем.
Хочется выразить благодарность Алексею (Energetik) за содействие в приобретении плат устройства и БП для экспериментов, за полезные идеи и мотивацию.
Добавлен функционал USB-транспорта (проигрывание файлов с "флешки").
Клиент для Windows (x32), один ИЗ: http://download.sarine.nl/Programs/g....16-1-win32.7z
Текущая версия ПО: 1.1.0
Инструкция по подключению сетевого диска MusiCube в WIndows.pdf
Ну и пара фото хозяйства:
Социальные закладки