ทำ SDR Server ไว้ให้เพื่อนฟัง Shortwave ด้วย RTL-SDR
จากบทความก่อนหน้านี้ที่เราได้ทดลองรับฟัง Shortwave ด้วยโปรแกรม SDR Sharp ผ่านทาง SDR Server หรือ Spyserver แล้วนั้น ในบทความนี้เราก็จะมาทำ Spyserver โดยใช้อุปกรณ์ RTL-SDR จาก rtl-sdr.com ซึ่งเป็นอุปกรณ์ SDR ที่มีราคาถูกมาก และสามารถนำมาต่อกับ Raspberry Pi เพื่อทำเป็น Spyserver ได้ด้วย
อุปกรณ์ที่ใช้ทำในบทความนี้
สำหรับอุปกรณ์ตัวหลักนั้นจะเป็น Raspberry Pi ซึ่งเป็นระบบปฏิบัติการเฉพาะ สามารถดาวน์โหลดได้จากหน้าเว็บ Raspberry Pi ซึ่งสามารถใช้ได้ตั้งแต่ Raspberry Pi 3B ขึ้นไป แต่แนะนำให้ใช้เป็น Raspberry Pi 4B RAM 4GB.
อุปกรณ์ SDR สั่งได้จาก Aliexpress ซึ่งแนะนำให้ซื้อจาก RTLSDRBlog Store ซึ่งเป็นเว็บร้านค้าหลักของ rtl-sdr.com จะใช้เป็น V3 หรือ V4 ก็ได้
อีกสิ่งหนึ่งจะต้องจัดเตรียมเพื่อให้การทดสอบรับสัญญาณสมบูรณ์ ก็คือสายอากาศ หากพื้นที่ ๆ อยู่รับสัญญาณคลื่นความถี่ VHF หรือ Broadcast FM ได้ดีก็อาจใช้สายอากาศแบบธรรมดาก็ได้ แต่หากต้องการรับสัญญาณ Shortwave Radio หรือ HF HAM Radio ก็ควรติดตั้งสายอากาศสำหรับคลื่นความถี่ HF ด้วย
เริ่มติดตั้งระบบปฏิบัติการลงบน Raspberry Pi
สำหรับระบบปฏิบัติการสำหรับ Raspberry Pi นั้น จะเป็นไฟล์ Image ซึ่งมีให้ดาวน์โหลดที่เว็บ raspberrypi.com แนะนำให้โหลดเป็นเวอร์ชั่น Legacy Lite ไม่ว่าจะเป็นรุ่น 32Bit หรือ 64Bit ก็ได้ หลังจากนั้นให้ทำการเขียน Image ลงบน Micro SD Card ด้วยโปรแกรม Win32DiskImager ซึ่งวิธีการทำนั้นไม่ขอนำมาทำเป็นบทความเพราะมีข้อมูลให้ศึกษาค้นคว้าอยู่แล้ว หรือหากใครมี Raspberry Pi ที่ลงระบบปฏิบัติการอยู่แล้ว อาจจะนำมาใช้ได้โดยไม่ต้องทำการเขียน Image ใหม่ก็สามารถทำได้
ณ ปัจจุบัน Raspberry Pi ได้เพิ่มความปลอดภัยในการใช้งานขึ้นไปอีก ซึ่งจะไม่มี user : pi ให้ Login ได้เหมือนก่อน ผู้ใช้งานอาจจะต้องมีการต่อคีย์บอร์ดและจอเพื่อสร้าง user : pi หรือ ชื่ออื่น ๆ ตามต้องการ แล้วจึงสามารถรีโมท Login ได้ด้วย putty
หรืออาจจะใช้วิธีการสร้าง user ให้กับ Raspberry Pi ด้วยการสร้างไฟล์ userconf.txt แล้วใส่ไว้ใน Drive Boot ของ Micro SD Card หลังจากเขียน Image เสร็จก็ได้ โดยในไฟล์จะมีข้อมูลตามตัวอย่าง
spyserver:$6$c70VpvPsVNCG0YR5$l5vWWLsLko9Kj65gcQ8qvMkuOoRkEagI90qi3F/Y7rm8eNYZHW8CY6BOIKwMH7a3YYzZYL90zf304cAHLFaZE0
ตัวอย่างข้อมูลในไฟล์ userconf.txt ด้านบนคือให้สร้าง user : spyserver โดยมีรหัสผ่านเป็น raspberry เพื่อใช้ในการเข้าระบบ ซึ่งหลังจากเข้าระบบได้แล้วให้ทำการเปลี่ยนรหัสผ่านทันที
อีกเรื่องหนึ่งคือหากจะรีโมทโดยใช้โปรแกรม putty เข้าได้นั้นก็จะต้องสร้างไฟล์ชื่อ ssh. (ssh . ไม่มีนามสกุล) โดยไม่ต้องมีข้อมูลใด ๆ อยู่ในไฟล์ ไว้ที่ Drive Boot ของ Micro SD Card สร้างง่าย ๆ โดยใช้ Command ของ Windows เช่นถ้า Drive Boot เป็น Drive E: ก็ใช้คำสั่ง…
echo "" > e:\ssh.
จากนั้นก็นำ Micro SD Card ที่เขียน Image และสร้างไฟล์ทั้งสองไฟล์แล้วไปเสียบเข้า Raspberry Pi เพื่อทำการ Boot ระบบ และทดลองรีโมทเข้าด้วยโปรแกรม putty
สำหรับตัว Software หรือ โปรแกรม Server นั้นเป็นโปรแกรมจาก airspy.com ซึ่งจะรองรับแทบทุกระบบปฏิบัติการ ดาวน์โหลดได้จากหน้าเว็บ airspy.com/download และเลือกดาวน์โหลดโปรแกรมให้ตรงกับ CPU และระบบปฏิบัติการที่เราใช้งานด้วย ซึ่งถ้าเป็น Linux ARMHF หมายถึง ใช้กับ Raspberry Pi รุ่น 32Bit ในที่นี้ผมจะเลือกเป็น Linux ARM64 เพราะระบบปฏิบัติการที่ผมใช้นั้นเป็นรุ่น 64Bit
ก่อนเริ่มการดาวน์โหลดและตั้งค่าในตัว Raspberry Pi ให้ใช้คำสั่ง sudo su 1 ครั้ง เพื่อเปลี่ยนสิทธิ์ในการทำงานเป็น super user
ในการดาวน์โหลดผ่านตัว Raspberry Pi นั้นเราจะใช้คำสั่ง wget โดยเราจะต้อง copy link address มาจากปุ่ม Download ก่อน ทำได้โดยคลิ๊กขวาที่ปุ่ม Download แล้วเลือก Copy Link แล้วนำมาวางเป็นคำสั่งที่โปรแกรม putty
จากนั้นทำการแตกไฟล์ spyserver.tgz ด้วยคำสั่ง
tar zxvf spyserver.tgz
ผลจากการแตกไฟล์ spyserver.tgz จะได้ไฟล์ออกมา 3 ไฟล์ดังภาพตัวอย่าง
ต่อไปเป็นขั้นตอนการลง Driver ของ RTL-SDR ซึ่งต้องลงให้ถูกต้องตามเวอร์ชั่นของอุปกรณ์ด้วยนะครับ หรืออาจจะพิจารณาลงเป็นเวอร์ชั่นของ V.4 เลยก็ได้ครับ หน้าการติดตั้ง RTL-SDR Driver อยู่ที่ https://www.rtl-sdr.com/V4/
ในการติดตั้งหากใช้คำสั่ง sudo su มาก่อนแล้ว ก็ไม่จำเป็นต้องมี sudo นำหน้าอีก
sudo apt-get install libusb-1.0-0-dev git cmake pkg-config
git clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
ในการติดตั้ง Driver ให้ใช้คำสั่งทีละบรรทัดนะครับ เพราะหากมี error อะไรเราจะได้รู้ได้ หากวางทีเดียวทั้งหมดโอกาสที่เราจะรู้ถึงความผิดพลาดนั้นแทบไม่มี และในการติดตั้งอาจมีการถามจากระบบให้ตอบ Y เพื่อทำการติดตั้ง Package
หากที่ใช้คำสั่งไปได้ผลตามภาพ ทุกอย่างก็น่าจะเรียบร้อย ให้ทำการ Reboot Raspberry Pi และเข้าสู่ขั้นตอนการตั้งค่า Spyserver
ก่อนทำการเริ่มตั้งค่าผมแนะนำให้ทำการ copy ไฟล์ spyserver.config เดิมเก็บไว้ก่อนเพื่อกันความผิดพลาดจะได้นำไฟล์สำรองกลับมาใช้งานได้ โดยอาจ copy ไว้เป็นชื่ออื่น ด้วยคำสั่ง
cp spyserver.config spyserver.backup
เมื่อทำการสำรองไฟล์ไว้แล้วก็เริ่มต้นตั้งค่าโดยใช้คำสั่ง pico เพื่อแก้ไขไฟล์ spyserver.config ซึ่งต้องให้ตรงกับที่อยู่ไฟล์ด้วยนะครับ ซึ่งในกรณีนี้เราแตกไฟล์ไว้ที่ /home/spyserver ก็จะต้อง pico ที่ /home/spyserver หรือใช้คำสั่ง pico แบบเต็ม ก็คือ pico /home/spyserver/spyserver.config
ให้ระบุข้อมูลพื้นฐานเกี่ยวกับสถานี Spyserver ของเราเข้าไป
ที่บรรทัด device_type = ให้กำหนดเป็น RTL-SDR ที่บรรทัด device_sample_rate นั้นให้เอาเครื่องหมาย # หน้าบรรทัดออกและกำหนดค่า Sample Rate ให้ตรงกับอุปกรณ์ที่เราใช้ เช่น RTL-SDR ก็กำหนดเป็น 2500000
การตั้งค่าในบรรทัดอื่น ๆ หากมีเครื่องหมาย # อยู่ด้านหน้าและเราต้องการเปลี่ยนการตั้งค่าให้มีผลให้ลบเครื่องหมาย # ออกด้วย
สำหรับอุปกรณ์ RTL-SDR เพื่อการรับสัญญาณที่ดีให้กำหนด
rtl_sampling_mode = 0
ตัวอย่างการตั้งค่าความถี่ใน config นี้ผมกำหนดให้ความถี่ต่ำสุดเป็น 144.000 MHz. ความถี่สูงสุดเป็น 147.000 MHz. และความถี่เริ่มต้นใช้งานเป็น 145.000 MHz. หากเพื่อน ๆ ที่ต้องการใช้งานที่ความถี่อื่นก็ให้มาเปลี่ยนที่ 3 บรรทัดนี้
เมื่อตรวจสอบการตั้งค่าดีแล้วก็ให้กดปุ่ม Ctrl+O แล้ว Enter เพื่อบันทึกและกด Ctrl+X เพื่อออกจากการตั้งค่า
ทดสอบเริ่มทำงาน Spyserver ด้วยคำสั่ง spyserver แล้วตามด้วยชื่อ config ไฟล์
หากเราอยู่ที่ /home/spyserver สามารถสั่งได้ด้วย
./spyserver spyserver.config
หรือ หากเราไม่ได้อยู่ที่ /home/spyserver
/home/spyserver/spyserver /home/spyserver/spyserver.config
หากผลลัพธ์ของการใช้คำสั่งได้ตามภาพ Spyserver ของเราก็น่าจะทำงานแล้ว หรืออาจจะตรวจสอบได้จากหน้าเว็บ https://airspy.com/directory จะเห็นมีจุดกลมตาม Location ที่เราใส่ไปในไฟล์ spyserver.config
ทดลองใช้โปรแกรม SDR Sharp เชื่อมต่อตามหมายเลข IP ภายในของ Raspberry Pi เช่น ขณะนี้ Raspberry Pi ของผมได้หมายเลข IP : 192.168.77.141 ผมก็ใช้โปรแกรม SDR Sharp เชื่อมต่อมาที่หมายเลข IP นี้ และใช้หมายเลข Port 5555 ซึ่งเป็นหมายเลข Port ของ Spyserver
หลังจากตั้งค่าแล้วให้กดที่ปุ่ม C หรือ ปุ่ม Connect นั่นเอง หากไม่มีอะไรผิดพลาดเราก็จะเริ่มได้ยินเสียงอะไรบ้างแล้ว
การสั่งทำงานของ Spyserver นี้เป็นการสั่งทำงานแบบชั่วคราวนะครับ สามารถหยุดได้โดยการกดปุ่ม Ctrl+C เพื่อหยุดทำงาน
คราวนี้เรามาลองตั้งค่าให้ใช้งานที่ความถี่กว้างมากขึ้นโดยความถี่ต่ำสุดคือ 1 MHz. และความถี่สูงสุดคือ 300 MHz.
หลังจากที่ทำการบันทึกแล้วก็ให้ทดสอบเชื่อมต่อด้วยโปรแกรม SDR Sharp และลองปรับความถี่ไปรับสัญญาณความถี่ FM Broadcast (หากในพื้นที่มีสัญญาณ)
ต่อไปทดสอบรับสัญญาณ Shortwave Radio จากต่างประเทศกันบ้าง (ต้องมีสายอากาศในย่านความถี่ HF)
หากผลทดสอบเป็นที่น่าพอใจแล้ว ส่วนต่อไปก็คือทำให้ Spyserver ของเราทำงานแบบ Service ของระบบปฏิบัติการ Linux โดยการสร้างไฟล์ spyserver.service ไว้ที่ /etc/systemd/system/ หากไม่ได้เป็น super user อย่าลืมพิมพ์ sudo su ก่อนนะครับ
pico /etc/systemd/system/spyserver.service
แล้วทำการวางข้อมูลลงไปในไฟล์ แล้วทำการบันทึกด้วย Ctrl+O แล้ว Enter
[Unit]
Description=AirSpy Spyserver Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/home/spyserver/spyserver /home/spyserver/spyserver.config
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=spyserver
Restart=always
[Install]
WantedBy=multi-user.target
สั่งเริ่มทำงานของ Service Spyserver ด้วยคำสั่ง
systemctl start spyserver
ให้ทดลองเชื่อมต่อด้วยโปรแกรม SDR Sharp ใหม่อีกครั้ง ซึ่งถ้าไม่มีอะไรผิดพลาดจะต้องเชื่อมต่อได้ตามปกติ และหากเชื่อมต่อไดปกติให้ใช้คำสั่งเพื่อเริ่มการทำงานทุกครั้งเมื่อ Boot ระบบขึ้นมาด้วยคำสั่ง
systemctl enable spyserver
ทดสอบ reboot ตัว Raspberry Pi หลังจาก reboot แล้วทดลองเชื่อมต่ออีกครั้ง
ณ ขณะนี้เป็นการตั้งค่าเพื่อรองรับการเชื่อมต่อภายในวง Network เดียวกันเท่านั้น ซึ่งในการเปิดให้มีการเชื่อมต่อจากภายนอกนั้น ผู้ใช้จะต้องมีความรู้พื้นฐานเกี่ยวกับเรื่อง Domain และเรื่องการทำ Forward Port จึงจะสามารถเปิดรับการเชื่อมต่อจากภายนอกได้ โดยจะต้องมีการ Update Domain ให้ตรงกับ IP ของอินเตอร์เน็ตบ้านที่ใช้งานอยู่และต้องทำการ Forward Port 5555 หรือหมายเลขอื่น ๆ ให้มายังตัวอุปกรณ์ Raspberry Pi ที่ทำงานเป็น Spyserver ด้วย จึงจะสามารถเชื่อมต่อได้
สำหรับผู้ที่ใช้งาน Airspy HF+ Discovery
การติดตั้ง Driver สำหรับอุปกรณ์ SDR จาก airspy.com นั้นก็ทำได้ไม่ยากครับ ใช้ sciript ติดตั้งคล้าย ๆ กับ RTL-SDR แนะนำให้ทำทีละขั้นตอนนะครับ
mkdir airspy
cd airspy
wget https://github.com/airspy/airspyhf/archive/master.zip
unzip master.zip
cd airspyhf-master
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
เมื่อติดตั้ง Driver เสร็จแล้ว ก็ทำการแก้ไขไฟล์ spyserver.config เพื่อให้เปลี่ยนไปใช้ Driver ของ Airspy HF+
sudo pico /home/spyserver/spyserver.config
เมื่อทำการแก้ไขค่า config เรียบร้อยแล้วก็สั่งเริ่มการทำงานของ Service Spyserver ใหม่อีกครั้ง
sudo systemctl restart spyserver
ทดสอบใช้คำสั่งเพื่อดูสถานะของ spyserver ด้วยคำสั่ง
sudo systemctl status spyserver
สถานะของ Spyserver จะต้องเป็น running นะครับ ซึ่งก็หมายถึงทำงานได้ปกติ เสร็จแล้วก็ให้ทดสอบใช้โปรแกรม SDR Sharp เชื่อมต่อเข้ามายัง Spyserver ของเราอีกครั้งว่าทำงานได้ตามปกติหรือไม่
สำหรับตัวผู้เขียนเองเริ่มต้นใช้งาน Spyserver ไม่นานเท่าไรหากมีข้อผิดพลาดหรือทำตามบทความแล้วไม่ได้ สามารถติดต่อโดยตรงมาได้ที่ผม HS2BMI ผ่านทางไลน์ Id : aisfttx หรือ Scan QR Code เข้ามาก็ได้ครับ