هذا دليل سريع حول كيفية استخدام Raspberry Pi لتشغيل الأقراص الدوارة الحديثة مع مخرج USB لاسلكيًا على تثبيت Sonos. يركز هذا الدليل على حالة الاستخدام هذه، ولكن يمكن استخدامه أيضًا للبث إلى مكبرات صوت أخرى لأننا سنقوم بإنشاء دفق MP3 يمكن تشغيله تقريبًا بواسطة أي شيء يمكنه دفق الصوت.
نحتاج أولاً إلى التثبيت النظيف لـ Raspbian على بطاقة SD. وبما أننا لا نحتاج إلى رسومات أو أي شيء خاص، فيمكننا استخدام Raspbian Lite. أيضًا، لا نحتاج إلى مساحة كبيرة على القرص، وربما يكون أي شيء بدءًا من 2 جيجابايت وما فوق أمرًا جيدًا. بعد التثبيت، أستخدم فقط 1.5 غيغابايت من بطاقة SD الخاصة بي.
بالنسبة للتثبيت، استخدمت إصدار Buster
من Raspbian OS Lite (سبتمبر 2022). يمكنك تجربة إصدار أحدث، ولكن لم يتم اختباره.
قم بتثبيت Raspberry Pi OS Lite (64 بت) عبر Raspberry Pi Imager https://www.raspberrypi.com/software/
انقر على أيقونة الترس للحصول على خيارات متقدمة
vinyl
،قم بتوصيل Raspberry Pi الخاص بك، وقم بتشغيل ssh به، وقم بتشغيل ما يلي
smorton@homepc: ~ $ ssh [email protected]
vinyl@vinyl: ~ $ cd /tmp && wget https://github.com/stephencmorton/USB-Turntables-to-Sonos-with-RPi/archive/master.zip && unzip master.zip && USB-Turntables-to-Sonos-with-RPi-master/scripts/install.sh
قم بالتخطي للأمام إلى "التحقق مما إذا كان الكي بالبخار يعمل أم لا".
الآن، قم بتوصيل القرص الدوار بـ Raspberry Pi، باستخدام USB. يمكنك استخدام الأمر arecord -l
للتحقق من اكتشاف جهازك. يظهر لي هذا:
vinyl@vinyl:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: CODEC [USB AUDIO CODEC], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
قم بتدوين رقم البطاقة 1
في حالتي (" card: 1
") أو حتى الاسم الأفضل ("CODEC" أعلاه). ربما يكون هذا هو نفسه بالنسبة لك، ولكن إذا كان مختلفًا، فقد تحتاج إلى تذكره والتغيير وفقًا لذلك في الخطوات التالية. سوف تستخدمه في ملف asound.conf
أدناه.
ALSA هو النظام الفرعي الصوتي ذو المستوى الأدنى في Linux. نحن نقوم بتكوين الإدخال حتى يتمكن darkice من استخدامه.
نظرًا لأن معظم الأقراص الدوارة USB لا تحتوي على جهاز للتحكم في مستوى الصوت، ومستوى صوت الإدخال عالق في نصف ما ينبغي أن يكون عليه تقريبًا، فنحن بحاجة إلى إضافة برنامج للتحكم في مستوى الصوت. قم بإنشاء الملف /etc/asound.conf وقم بتحريره لإضافة المحتويات التالية:
pcm.dmic_hw {
type hw
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
channels 2
# format S16_LE # Use this if "format dat" doesn't work. Only difference is S16_LE = 44.1 kHz sampling vs dat = 48 kHz
format dat
}
pcm.dmic_mm {
type mmap_emul
slave.pcm dmic_hw
}
pcm.dmic_sv {
type softvol
slave.pcm dmic_hw
control {
name "Boost Capture Volume"
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
}
min_dB -5.0
max_dB 20.0
}
بعد ذلك، قم بتشغيل هذا الأمر لتحديث حالة alsa وأيضًا إظهار VU Meters لاختبار حجم الإدخال:
arecord -D dmic_sv -r 48000 -f dat -c 2 --vumeter=stereo /dev/null
(سيظهر مستوى الصوت صفرًا حتى تقوم بتشغيل شيء ما على مشغل التسجيل الخاص بك.)
قد تلاحظ أن مستوى الصوت منخفض جدًا. إذا كان الأمر كذلك، يمكنك استخدام alsamixer
لتغيير مستوى الصوت. اضغط على F6
لتحديد جهاز USB الدوار، ثم اضغط على TAB
حتى ترى شريط تمرير التعزيز. لقد قمت بضبطه على 65
في الإعداد الخاص بي، ولكن يمكنك تجربته. تأكد من عدم رفع الصوت إلى مستوى عالٍ جدًا، وإلا قد تنخفض جودة الصوت بسبب التقطيع.
قم بتشغيل الأوامر التالية:
sudo apt-get update
sudo apt-get install -y darkice icecast2
حدد Yes
لتكوين Icecast. يمكنك ترك كل شيء كإعداد افتراضي، ولكن إذا قمت بتغيير كلمة المرور، فتأكد من تغيير كلمة المرور في التكوين في الخطوات التالية.
Darkice هو البرنامج الذي يقوم بالتسجيل من جهاز USB وترميز ذلك إلى MP3. لتكوينه، قم بإنشاء أو تحرير الملف /etc/darkice.cfg، ثم ضعه في:
# this section describes general aspects of the live streaming session
[general]
duration = 0 # duration of encoding, in seconds. 0 means forever
bufferSecs = 1 # size of internal slip buffer, in seconds
reconnect = yes # reconnect to the server(s) if disconnected
realtime = yes # run the encoder with POSIX realtime priority (default==yes)
rtprio = 4 # scheduling priority for the realtime threads (default==4)
# this section describes the audio input that will be streamed
[input]
device = dmic_sv # OSS DSP soundcard device for the audio input
sampleRate = 48000 # other settings have crackling audo, esp. 44100
bitsPerSample = 16 # bits per sample. try 16
channel = 2 # channels. 1 = mono, 2 = stereo
# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections
[icecast2-0]
bitrateMode = cbr
format = mp3
bitrate = 320
server = vinyl
port = 8000
mountPoint = turntable.mp3
name = Turntable
description = Music from our record player
# highpass = 18
# lowpass = 20000
url = http://vinyl.local:8080/
genre = vinyl
public = no
password = hackme # or whatever you set your icecast2 password to
لمزيد من المعلومات حول هذا الملف والمعلمات التي يمكنك تغييرها، راجع صفحة الدليل darkice.cfg.
يستخدم Darkice وicecast عناصر تحكم init.d قديمة الطراز. دعونا فقط نقوم بتحديثها بينما نحن نقوم بذلك.
# Remove old-fashioned init.d controls
sudo update-rc.d darkice remove
sudo update-rc.d icecast2 remove
انسخ الكود أدناه إلى /etc/systemd/system/darkice.service و/etc/systemd/system/icecast2.service. ثم اركض
sudo systemctl enable icecast2
sudo systemctl enable darkice
darkice.service
[Unit]
Description =DarkIce Icecast Network Audio Streamer
After =icecast.target
[Service]
Type =simple
ExecStart =/usr/bin/darkice -c /etc/darkice.cfg
ExecReload =/bin/kill -HUP $MAINPID
User =root
Group =root
# WorkingDirectory=/usr/share/icecast2/
Restart =always
RestartSec =5
[Install]
WantedBy =multi-user.target
com.icecast2.service
[Unit]
Description =Icecast Network Audio Streaming Server
After =network.target
[Service]
Type =simple
ExecStart =/usr/bin/icecast2 -c /etc/icecast2/icecast.xml
ExecReload =/bin/kill -HUP $MAINPID
User =icecast2
Group =icecast
# WorkingDirectory=/usr/share/icecast2/
Restart =always
[Install]
WantedBy =multi-user.target
أعد تشغيل Raspberry Pi، للتحقق مما إذا تم إعداد كل شيء بشكل صحيح ولأننا قمنا بتغيير بعض ملفات التكوين والتأكد من تشغيل Darkice.
الآن افتح متصفحك، وانتقل إلى http://vinyl.local:8000
(منفذ Icecast2 الافتراضي). يجب أن تشاهد Mountpoint Mount Point /turntable.mp3
هناك. إذا لم يكن الأمر كذلك، فارجع وتحقق مما إذا كنت قد فعلت كل شيء كما هو موضح. انقر بزر الماوس الأيمن على رابط M3U (أعلى اليمين)، وانسخ عنوان الرابط. هذا هو عنوان URL للبخار الخاص بك. يمكنك فتح هذا في iTunes أو VLC أو متصفحك أو في أي عميل صوتي آخر يدعم البث.
افتح تطبيق Sonos على سطح المكتب ( لن يعمل هذا على الهاتف المحمول). انتقل إلى Manage
> Add Radio Station...
والصق عنوان URL للبث الخاص بك. يمكنك اختيار أي اسم تريده. لتشغيل البث على Sonos، انتقل إلى Radio by TuneIn
> My Radio Stations
. يجب أن يظهر الدفق الخاص بك هناك! انقر بزر الماوس الأيمن لإضافة إلى المفضلة لديك إذا كنت تريد! :-) يمكنك بدء اللعب من الأجهزة المحمولة، ولكن لا يمكنك إضافة دفق عبر الشبكة عليها.
يمكنك تسريع وقت تشغيل Raspberry Pi
يتم ترك هذا كتمرين للقارئ، ولكن هناك العديد من مقتطفات التعليمات البرمجية في fastboot.sh للنظر فيها بالإضافة إلى روابط متنوعة في الملاحظات والمراجع الفنية.
أنظر أيضا