ทำ SDR Server ไว้ให้เพื่อนฟัง Shortwave ด้วย RTL-SDR

Suttipong Tanuphone
6 min readFeb 3, 2024

--

จากบทความก่อนหน้านี้ที่เราได้ทดลองรับฟัง 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.

ภาพตัวอย่างคอมพิวเตอร์จิ่ว หรือ Raspberry Pi

อุปกรณ์ SDR สั่งได้จาก Aliexpress ซึ่งแนะนำให้ซื้อจาก RTLSDRBlog Store ซึ่งเป็นเว็บร้านค้าหลักของ rtl-sdr.com จะใช้เป็น V3 หรือ V4 ก็ได้

ภาพตัวอย่างอุปกรณ์ SDR จาก RTL-SDR Blog

อีกสิ่งหนึ่งจะต้องจัดเตรียมเพื่อให้การทดสอบรับสัญญาณสมบูรณ์ ก็คือสายอากาศ หากพื้นที่ ๆ อยู่รับสัญญาณคลื่นความถี่ VHF หรือ Broadcast FM ได้ดีก็อาจใช้สายอากาศแบบธรรมดาก็ได้ แต่หากต้องการรับสัญญาณ Shortwave Radio หรือ HF HAM Radio ก็ควรติดตั้งสายอากาศสำหรับคลื่นความถี่ HF ด้วย

ภาพตัวอย่างสายอากาศไดโพลที่คลื่นความถี่ 7MHz.

เริ่มติดตั้งระบบปฏิบัติการลงบน Raspberry Pi

สำหรับระบบปฏิบัติการสำหรับ Raspberry Pi นั้น จะเป็นไฟล์ Image ซึ่งมีให้ดาวน์โหลดที่เว็บ raspberrypi.com แนะนำให้โหลดเป็นเวอร์ชั่น Legacy Lite ไม่ว่าจะเป็นรุ่น 32Bit หรือ 64Bit ก็ได้ หลังจากนั้นให้ทำการเขียน Image ลงบน Micro SD Card ด้วยโปรแกรม Win32DiskImager ซึ่งวิธีการทำนั้นไม่ขอนำมาทำเป็นบทความเพราะมีข้อมูลให้ศึกษาค้นคว้าอยู่แล้ว หรือหากใครมี Raspberry Pi ที่ลงระบบปฏิบัติการอยู่แล้ว อาจจะนำมาใช้ได้โดยไม่ต้องทำการเขียน Image ใหม่ก็สามารถทำได้

ภาพตัวอย่างหน้าเว็บดาวน์โหลด Image ของ Raspberry Pi รุ่น Legacy Lite

ณ ปัจจุบัน 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.
ภาพตัวอย่างไฟล์ userconf.txt และ ssh. ที่สร้างไว้ที่ Drive Boot ของ Micro SD Card

จากนั้นก็นำ Micro SD Card ที่เขียน Image และสร้างไฟล์ทั้งสองไฟล์แล้วไปเสียบเข้า Raspberry Pi เพื่อทำการ Boot ระบบ และทดลองรีโมทเข้าด้วยโปรแกรม putty

ภาพตัวอย่างการรีโมทเข้า Raspberry Pi ด้วยโปรแกรม putty โดยใช้ User : spyserver

สำหรับตัว Software หรือ โปรแกรม Server นั้นเป็นโปรแกรมจาก airspy.com ซึ่งจะรองรับแทบทุกระบบปฏิบัติการ ดาวน์โหลดได้จากหน้าเว็บ airspy.com/download และเลือกดาวน์โหลดโปรแกรมให้ตรงกับ CPU และระบบปฏิบัติการที่เราใช้งานด้วย ซึ่งถ้าเป็น Linux ARMHF หมายถึง ใช้กับ Raspberry Pi รุ่น 32Bit ในที่นี้ผมจะเลือกเป็น Linux ARM64 เพราะระบบปฏิบัติการที่ผมใช้นั้นเป็นรุ่น 64Bit

ภาพตัวอย่างหน้าเว็บดาวน์โหลดโปรแกรม SDR Server

ก่อนเริ่มการดาวน์โหลดและตั้งค่าในตัว Raspberry Pi ให้ใช้คำสั่ง sudo su 1 ครั้ง เพื่อเปลี่ยนสิทธิ์ในการทำงานเป็น super user

ในการดาวน์โหลดผ่านตัว Raspberry Pi นั้นเราจะใช้คำสั่ง wget โดยเราจะต้อง copy link address มาจากปุ่ม Download ก่อน ทำได้โดยคลิ๊กขวาที่ปุ่ม Download แล้วเลือก Copy Link แล้วนำมาวางเป็นคำสั่งที่โปรแกรม putty

ภาพตัวอย่างการใช้โปรแกรม wget เพื่อดาวน์โหลดโปรแกรม SDR Server จากเว็บไซต์ airspy.com

จากนั้นทำการแตกไฟล์ spyserver.tgz ด้วยคำสั่ง

tar zxvf spyserver.tgz

ผลจากการแตกไฟล์ spyserver.tgz จะได้ไฟล์ออกมา 3 ไฟล์ดังภาพตัวอย่าง

ภาพตัวอย่างผลจากการแตกไฟล์ spyserver.tgz

ต่อไปเป็นขั้นตอนการลง Driver ของ RTL-SDR ซึ่งต้องลงให้ถูกต้องตามเวอร์ชั่นของอุปกรณ์ด้วยนะครับ หรืออาจจะพิจารณาลงเป็นเวอร์ชั่นของ V.4 เลยก็ได้ครับ หน้าการติดตั้ง RTL-SDR Driver อยู่ที่ https://www.rtl-sdr.com/V4/

ภาพตัวอย่างบรรทัดคำสั่งในการติดตั้ง RTL-SDR Driver V.4 จากหน้าเว็บ rtl-sdr.com

ในการติดตั้งหากใช้คำสั่ง 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

ภาพตัวอย่างการใช้คำสั่งเพื่อติดตั้ง Driver RTL-SDR V.4 ส่วนแรก
ภาพตัวอย่างผลจากการใช้คำสั่ง cmake
ภาพตัวอย่างผลจากการใช้คำสั่ง make
ภาพตัวอย่างผลจากการใช้คำสั่ง make install
ภาพตัวอย่างการใช้คำสั่งชุดติดตั้งชุดสุดท้าย

หากที่ใช้คำสั่งไปได้ผลตามภาพ ทุกอย่างก็น่าจะเรียบร้อย ให้ทำการ Reboot Raspberry Pi และเข้าสู่ขั้นตอนการตั้งค่า Spyserver

ก่อนทำการเริ่มตั้งค่าผมแนะนำให้ทำการ copy ไฟล์ spyserver.config เดิมเก็บไว้ก่อนเพื่อกันความผิดพลาดจะได้นำไฟล์สำรองกลับมาใช้งานได้ โดยอาจ copy ไว้เป็นชื่ออื่น ด้วยคำสั่ง

cp spyserver.config spyserver.backup
ภาพตัวอย่างการใช้คำสั่งเพื่อสำรองไฟล์ spyserver.config

เมื่อทำการสำรองไฟล์ไว้แล้วก็เริ่มต้นตั้งค่าโดยใช้คำสั่ง pico เพื่อแก้ไขไฟล์ spyserver.config ซึ่งต้องให้ตรงกับที่อยู่ไฟล์ด้วยนะครับ ซึ่งในกรณีนี้เราแตกไฟล์ไว้ที่ /home/spyserver ก็จะต้อง pico ที่ /home/spyserver หรือใช้คำสั่ง pico แบบเต็ม ก็คือ pico /home/spyserver/spyserver.config

ภาพตัวอย่างการกำหนดค่าพื้นฐานในไฟล์ spyserver.config

ให้ระบุข้อมูลพื้นฐานเกี่ยวกับสถานี Spyserver ของเราเข้าไป

ที่บรรทัด device_type = ให้กำหนดเป็น RTL-SDR ที่บรรทัด device_sample_rate นั้นให้เอาเครื่องหมาย # หน้าบรรทัดออกและกำหนดค่า Sample Rate ให้ตรงกับอุปกรณ์ที่เราใช้ เช่น RTL-SDR ก็กำหนดเป็น 2500000

ภาพตัวอย่างการกำหนดอุปกรณ์ SDR และค่า Sample Rate ที่ใช้งาน

การตั้งค่าในบรรทัดอื่น ๆ หากมีเครื่องหมาย # อยู่ด้านหน้าและเราต้องการเปลี่ยนการตั้งค่าให้มีผลให้ลบเครื่องหมาย # ออกด้วย

สำหรับอุปกรณ์ RTL-SDR เพื่อการรับสัญญาณที่ดีให้กำหนด
rtl_sampling_mode = 0

ภาพตัวอย่างการกำหนดความถี่ในการใช้งานของ Spyserver และค่าอื่น ๆ

ตัวอย่างการตั้งค่าความถี่ใน 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

หากผลลัพธ์ของการใช้คำสั่งได้ตามภาพ Spyserver ของเราก็น่าจะทำงานแล้ว หรืออาจจะตรวจสอบได้จากหน้าเว็บ https://airspy.com/directory จะเห็นมีจุดกลมตาม Location ที่เราใส่ไปในไฟล์ spyserver.config

ภาพตัวอย่างจากหน้าเว็บ airspy.com แสดงถึง Location Spyserver ของเรา

ทดลองใช้โปรแกรม SDR Sharp เชื่อมต่อตามหมายเลข IP ภายในของ Raspberry Pi เช่น ขณะนี้ Raspberry Pi ของผมได้หมายเลข IP : 192.168.77.141 ผมก็ใช้โปรแกรม SDR Sharp เชื่อมต่อมาที่หมายเลข IP นี้ และใช้หมายเลข Port 5555 ซึ่งเป็นหมายเลข Port ของ Spyserver

ภาพตัวอย่างการตั้งค่าหมายเลข IP และ Port ที่โปรแกรม SDR Sharp เพื่อเชื่อมต่อมายัง Spyserver

หลังจากตั้งค่าแล้วให้กดที่ปุ่ม C หรือ ปุ่ม Connect นั่นเอง หากไม่มีอะไรผิดพลาดเราก็จะเริ่มได้ยินเสียงอะไรบ้างแล้ว

การสั่งทำงานของ Spyserver นี้เป็นการสั่งทำงานแบบชั่วคราวนะครับ สามารถหยุดได้โดยการกดปุ่ม Ctrl+C เพื่อหยุดทำงาน

คราวนี้เรามาลองตั้งค่าให้ใช้งานที่ความถี่กว้างมากขึ้นโดยความถี่ต่ำสุดคือ 1 MHz. และความถี่สูงสุดคือ 300 MHz.

ภาพตัวอย่างการตั้งค่าความถี่ใช้งานที่กว้างขึ้น

หลังจากที่ทำการบันทึกแล้วก็ให้ทดสอบเชื่อมต่อด้วยโปรแกรม SDR Sharp และลองปรับความถี่ไปรับสัญญาณความถี่ FM Broadcast (หากในพื้นที่มีสัญญาณ)

ภาพตัวอย่างการรับสัญญาณ FM Broadcast ด้วยโปรแกรม SDR Sharp ผ่านทาง Spyserver

ต่อไปทดสอบรับสัญญาณ Shortwave Radio จากต่างประเทศกันบ้าง (ต้องมีสายอากาศในย่านความถี่ HF)

ภาพตัวอย่างการรับสัญญาณ Shortwave Radio ด้วยโปรแกรม SDR Sharp ผ่านทาง Spyserver

หากผลทดสอบเป็นที่น่าพอใจแล้ว ส่วนต่อไปก็คือทำให้ 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
ภาพตัวอย่างข้อมูลในไฟล์ /etc/systemd/system/spyserver.service
ภาพตัวอย่างการสั่งเริ่มการทำงานของ Service Spyserver

สั่งเริ่มทำงานของ Service Spyserver ด้วยคำสั่ง

systemctl start spyserver

ให้ทดลองเชื่อมต่อด้วยโปรแกรม SDR Sharp ใหม่อีกครั้ง ซึ่งถ้าไม่มีอะไรผิดพลาดจะต้องเชื่อมต่อได้ตามปกติ และหากเชื่อมต่อไดปกติให้ใช้คำสั่งเพื่อเริ่มการทำงานทุกครั้งเมื่อ Boot ระบบขึ้นมาด้วยคำสั่ง

systemctl enable spyserver
ภาพตัวอย่างการใช้คำสั่งเพื่อให้เริ่มทำงาน Service ของ Spyserver ทุกครั้งที่ boot ระบบ

ทดสอบ reboot ตัว Raspberry Pi หลังจาก reboot แล้วทดลองเชื่อมต่ออีกครั้ง

ภาพตัวอย่างการเชื่อมต่อหลังจาก boot ระบบขึ้นมาอีกครั้ง ต้องเชื่อมต่อได้ตามปกติ

ณ ขณะนี้เป็นการตั้งค่าเพื่อรองรับการเชื่อมต่อภายในวง 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 ของ Airspy HF+
ภาพตัวอย่างผลลัพธ์จากการใช้ชุดคำสั่งติดตั้ง Driver ของ Airspy HF+ ในชุดถัดมา
ภาพตัวอย่างจากการใช้คำสั่ง make และ sudo make install
ภาพตัวอย่างจากการใช้คำสั่ง sudo ldconfig ซึ่งเป็นคำสั่งสุดท้ายในการติดตั้ง Driver Airspy HF+

เมื่อติดตั้ง Driver เสร็จแล้ว ก็ทำการแก้ไขไฟล์ spyserver.config เพื่อให้เปลี่ยนไปใช้ Driver ของ Airspy HF+

sudo pico /home/spyserver/spyserver.config
ภาพตัวอย่างการตั้งค่า spyserver.config เพื่อใช้กับ Airspy HF+

เมื่อทำการแก้ไขค่า config เรียบร้อยแล้วก็สั่งเริ่มการทำงานของ Service Spyserver ใหม่อีกครั้ง

sudo systemctl restart spyserver

ทดสอบใช้คำสั่งเพื่อดูสถานะของ spyserver ด้วยคำสั่ง

sudo systemctl status spyserver
ภาพตัวอย่างการใช้คำสั่งเพื่อดูสถานะของ Service Spyserver

สถานะของ Spyserver จะต้องเป็น running นะครับ ซึ่งก็หมายถึงทำงานได้ปกติ เสร็จแล้วก็ให้ทดสอบใช้โปรแกรม SDR Sharp เชื่อมต่อเข้ามายัง Spyserver ของเราอีกครั้งว่าทำงานได้ตามปกติหรือไม่

สำหรับตัวผู้เขียนเองเริ่มต้นใช้งาน Spyserver ไม่นานเท่าไรหากมีข้อผิดพลาดหรือทำตามบทความแล้วไม่ได้ สามารถติดต่อโดยตรงมาได้ที่ผม HS2BMI ผ่านทางไลน์ Id : aisfttx หรือ Scan QR Code เข้ามาก็ได้ครับ

QR Code HS2BMI

--

--