Raspberry Pi ได้เปิดตัว Compute Module 5 (CM5) และทางบริษัทได้ส่งชุดพัฒนา “Raspberry Pi Development Kit for CM5” มาให้เราได้รีวิวและทดลองใช้งานโมดูล Broadcom BCM2712 รุ่นใหม่ ซึ่งมาแทนที่ Raspberry Pi Compute Module 4 (CM4) ที่เปิดตัวไปเมื่อปี 2020
วันนี้เราจะมาแกะกล่องและดูชุดพัฒนาเบื้องต้น โดยเริ่มจากการตรวจสอบฮาร์ดแวร์ การเชื่อมต่ออุปกรณ์เสริม การบูตเข้าสู่ระบบปฏิบัติการ Raspberry Pi OS และการเก็บข้อมูลระบบพื้นฐาน ทั้งนี้ ซึ่งจะทำการรีวิวเชิงลึกในบทความต่อไป
แกะกล่อง Raspberry Pi Development Kit for CM5
เราได้รับชุดพัฒนาในกล่องที่มีข้อความระบุว่า “Raspberry Pi Development Kit” และ “For Raspberry Pi CM5”
ด้านล่างของกล่องมีการระบุรายการอุปกรณ์ในชุด ซึ่งเราจะทำการตรวจสอบ พร้อมทั้งลิงก์ไปยังเอกสารประกอบ
มาดูกันว่าชุด Raspberry Pi Development Kit มีอะไรบ้าง, Raspberry Pi IO Case, Raspberry Pi Compute Module 5, Raspberry Pi Cooler (ไม่ได้ออกแบบมาให้ใช้กับฝาครอบของ IO Case), อะแดปเตอร์ไฟ USB-C กำลังไฟ 27W, สาย HDMI สองเส้น, สาย USB-A to USB-C, ชุดสายอากาศ Raspberry Pi Antenna Kit, เราไม่เห็น Raspberry Pi CM5 IO Board แต่หวังว่าจะอยู่ภายในแพ็กเกจของ IO Case…
มาลองตรวจสอบ Raspberry Pi CM5 ก่อนและเปรียบเทียบกับ Raspberry Pi CM4 (Lite) เนื่องจากตอนนี้ฉันไม่มีโมดูล CM4
มีส่วนประกอบเพิ่มเติมอยู่ด้านบนของโมดูล CM5 นั่นคือ Raspberry Pi RP1 Peripheral Controller ที่อยู่ในบอร์ด Raspberry Pi 5 SBC, ชิปจ่ายพลังงานมีขนาดใหญ่ขึ้น โดยเปลี่ยนจาก Dialog DA9090 เป็น Renesas DA9091 PMIC ซึ่งเป็นผลมาจากการควบรวมและเข้าซื้อกิจการในช่วงที่ผ่านมา, เมื่อซูมไปที่ตัวต้านทานกำหนดค่าบริเวณมุมขวาบนของโมดูล CM5, จะเห็นได้ว่าฉันได้รับโมเดล CM5104032 ซึ่งมาพร้อมกับ RAM 4GB, หน่วยความจำflash 32GB และโมดูลไร้สาย นอกจากนี้ยังสังเกตเห็นตัวเลือกที่ยังไม่ได้ประกาศออกมาอย่างเป็นทางการ ดูเหมือนว่าในอนาคตอาจจะมี Raspberry Pi Compute Module 5 รุ่นที่ราคาถูกกว่า พร้อม RAM 1GB และ eMMC 8GB ออกมา รวมถึงรุ่นระดับ higher-end ที่มี eMMC สูงสุด 128GB ด้วย
โมดูล CM4 มี eMMC flash อยู่ด้านบน แต่เนื่องจากมีชิป RP1 บน CM5 ทำให้ต้องย้าย eMMC flash จึไปอยู่ด้านล่างของโมดูลแทน, ยังคงมีตัวเชื่อมต่อแบบ board-to-board (B2B ) สองตัวออกแบบมาให้อยู่ในตำแหน่งเดียวกันและมี layout เหมือนเดิม
Raspberry Pi Cooler มาพร้อมกับชุดสกรู และเราจะเห็นช่องเปิดด้านซ้ายสำหรับสายอากาศ
ด้านล่างมีแผ่น thermal pad ระบายความร้อนสามแผ่น เพื่อให้แน่ใจว่า Raspberry Pi CM5 จะเย็นอยู่ภายใต้การใช้งานที่หนัก
ในที่สุดเราได้เห็น IO Case ซึ่งมาพร้อมกับบอร์ด Raspberry Pi CM5 IO Board ด้านหลังของ IO Case มีพอร์ตเพิ่มเติม เช่น พอร์ต HDMI สองพอร์ต, ไฟ LED สำหรับ Power และ Status, แจ็ค Ethernet RJ45 ความเร็ว 1Gb, พอร์ต USB 3.0 สองพอร์ต, พอร์ต USB-C สำหรับจ่ายไฟ, microSD card สำหรับ CM5 Lite เท่านั้น, ไฟ LED สำหรับการทำงานของ SSD, และช่องสำหรับสายอากาศ WiFi และ Bluetooth.
แผงด้านหน้ามีช่องระบายอากาศ, ช่องสำหรับสายเคเบิล MIPI สองช่องเชื่อมต่อกล้อง/จอแสดงผล MIPI และปุ่มเปิด/ปิด
การประกอบชุดพัฒนา Raspberry Pi และการตั้งค่าฮาร์ดแวร์
เรามาเปิดเคสโดยการคลายสกรูสี่ตัว (สองตัวในแต่ละด้าน) ที่ยึดสองส่วนเข้าด้วยกัน พัดลมจะเชื่อมต่อกับฝาปิดเพื่อระบายความร้อน จากนั้นเราจะคลายสกรูอีกสี่ตัวและถอดสายพัดลมออกเพื่อดึงบอร์ด Raspberry Pi CM5 IO Board ออกมา
บอร์ดมาพร้อมกับช่องใส่แบตเตอรี่ CR2032 สำหรับแบตเตอรี่ RTC, GPIO header 40 ขาของ Raspberry Pi พร้อมรูยึดสำหรับบอร์ดขยาย HAT, ตัวเชื่อมต่อ PoE 4 ขา, ตัวเชื่อมต่อ board-to-board สำหรับโมดูล CM5, ช่องเสียบ M.2 M-key สำหรับ NVMe SSD ขนาด 2230, 2242, 2260 หรือ 2280, และตัวเชื่อมต่อ “Jumper” 14 ขาเพื่อกำหนดค่าการบูต, การป้องกันการเขียน EEPROM, USB OTG เป็นต้น รวมทั้งเชื่อมต่อปุ่มกด Power
ส่วนด้านล่างไม่มีส่วนประกอบใดๆ
มาดำเนินการประกอบกันเลย โดยการเพิ่มขั้วต่อ SMA ลงใน IO case
ตอนนี้เราสามารถใส่ Raspberry Pi CM5 IO Board กลับเข้าไปใน IO Case, ใส่โมดูล Raspberry Pi CM5, เชื่อมต่อสายอากาศ WiFi กับโมดูล, และเพิ่ม Raspberry Pi NVMe SSD (officia) 256GB, ที่จริงแล้วจะต้องใส่ใส่แบตเตอรี่ CR2032 ด้วย แต่ตอนนี้เราไม่มีแบตเตอรี่
เราได้เชื่อมต่อ Raspberry Pi Camera Module 3 เข้ากับพอร์ต CAM/DISP โดยส่งสายแบนผ่านช่องด้านบนของเคส IO เราวางแผนที่จะเชื่อมต่อ Raspberry Pi Touch Display 2 ด้วย แต่ตอนนี้ขอข้ามไปก่อน เพราะมันต้องการไฟ 5V จาก GPIO header 40 ขาของ Raspberry Pi และเราต้องการทดสอบ Raspberry Pi Developer Kit กับ IO Case ที่ปิดสนิทก่อน อย่างไรก็ตาม มันจะทำงานได้ดีหากเราเปิด IO Case เพราะเราสามารถเข้าถึง 5V/GND ที่ตัวเชื่อมต่อ GPIO ได้
ฉันไม่ได้ใช้ Raspberry Pi Cooler เพราะ Raspberry Pi ระบุว่าไม่ได้ออกแบบให้ใช้กับฝาครอบ IO Case นั่นหมายความว่าเราจะใช้พัดลม PWM สำหรับการระบายความร้อนแทน
การบูตครั้งแรกเข้าสู่ Raspberry Pi OS และข้อมูลระบบ
มาปิดฝาใส่สายอากาศ WiFi ภายนอก และลองบูตระบบหลังจากเชื่อมต่อจอมอนิเตอร์ HDMI และ RF dongles สำหรับคีย์บอร์ดและเมาส์
ระบบเริ่มทำงานได้ตามปกติ แม้ว่าฉันยังไม่ได้แฟลช Raspberry Pi OS ลงในหน่วยความจำeMMC flash, อธิบายก็ง่ายๆ คือ Development Kit บูตจาก SSD 256GB ที่ติดตั้ง Raspberry Pi OS ไว้ล่วงหน้า
1 2 3 4 5 6 7 8 9 |
pi@raspberrypi:~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 405M 6.4M 398M 2% /run /dev/nvme0n1p2 235G 5.1G 218G 3% / tmpfs 2.0G 34M 2.0G 2% /dev/shm tmpfs 5.0M 48K 5.0M 1% /run/lock /dev/nvme0n1p1 510M 76M 435M 15% /boot/firmware tmpfs 405M 208K 404M 1% /run/user/1000 |
แต่ inxi ยืนยันว่าเรามี eMMC flash 32GB (Samsung BJTD4R) และมีข้อมูลระบบอื่นๆ ดังนี้:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
pi@raspberrypi:~ $ sudo inxi -Fc0 System: Host: raspberrypi Kernel: 6.6.51+rpt-rpi-2712 arch: aarch64 bits: 64 Console: pty pts/2 Distro: Debian GNU/Linux 12 (bookworm) Machine: Type: ARM System: Raspberry Pi Compute Module 5 Rev 1.0 details: N/A rev: c04180 serial: 2332d973fae3ffd8 CPU: Info: quad core model: N/A variant: cortex-a76 bits: 64 type: MCP cache: L2: 2 MiB Speed (MHz): avg: 2400 min/max: 1500/2400 cores: 1: 2400 2: 2400 3: 2400 4: 2400 Graphics: Device-1: bcm2712-hdmi0 driver: vc4_hdmi v: N/A Device-2: bcm2712-hdmi1 driver: vc4_hdmi v: N/A Display: wayland server: X.org v: 1.21.1.7 with: Xwayland v: 22.1.9 compositor: LabWC driver: gpu: vc4-drm,vc4_crtc,vc4_dpi,vc4_dsi,vc4_firmware_kms,vc4_hdmi,vc4_hvs,vc4_txp,vc4_v3d,vc4_vec tty: 80x24 resolution: 1920x1080 API: EGL/GBM Message: No known Wayland EGL/GBM data sources. Audio: Device-1: bcm2712-hdmi0 driver: vc4_hdmi Device-2: bcm2712-hdmi1 driver: vc4_hdmi API: ALSA v: k6.6.51+rpt-rpi-2712 status: kernel-api Network: Device-1: Raspberry Pi RP1 PCIe 2.0 South Bridge driver: rp1 IF: wlan0 state: up mac: 2c:cf:67:b2:8d:ea IF-ID-1: eth0 state: down mac: 2c:cf:67:b2:8d:e8 Bluetooth: Device-1: bcm7271-uart driver: bcm7271_uart Report: hciconfig ID: hci0 state: up address: 2C:CF:67:B2:8D:EB bt-v: 3.0 Device-2: bcm7271-uart driver: N/A Drives: Local Storage: total: 267.6 GiB used: 5.17 GiB (1.9%) ID-1: /dev/mmcblk0 type: Removable vendor: Samsung model: BJTD4R size: 29.12 GiB ID-2: /dev/nvme0n1 vendor: Samsung model: MZ9LQ256HBJD-00BVL size: 238.47 GiB Partition: ID-1: / size: 234.2 GiB used: 5.1 GiB (2.2%) fs: ext4 dev: /dev/nvme0n1p2 Swap: ID-1: swap-1 type: file size: 200 MiB used: 0 KiB (0.0%) file: /var/swap Sensors: System Temperatures: cpu: 68.8 C mobo: N/A Fan Speeds (RPM): cpu: 3516 Info: Processes: 214 Uptime: 4h 54m Memory: 3.95 GiB used: 1.33 GiB (33.5%) gpu: 8 MiB Init: systemd target: graphical (5) Shell: Sudo inxi: 3.3.26 |
ตรวจไม่พบกล้อง เราอาจจะต้องตรวจสอบการเชื่อมต่ออีกครั้ง และฉันอาจจะต้องตั้งค่าจัมเปอร์ ซึ่งเราจะตรวจสอบในการรีวิว Part 2
1 2 |
pi@raspberrypi:~ $ rpicam-hello --list No cameras available! |
อุณหภูมิขณะที่ไม่ทำงานอยู่ค่อนข้างสูงที่ 68.8°C เพราะไม่มีฮีทซิงค์และเราใช้าพัดลมเพียงอย่างเดียว มาลองรันสคริปต์ sbc-bench.sh เพื่อดูว่าเกิดการควบคุมอุณหภูมิ (thermal throttling) หรือไม่:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
pi@raspberrypi:~ $ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... sbc-bench v0.9.68 Installing needed tools: distro packages already installed, cpuminer. Done. Checking cpufreq OPP. Done. Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Throttling test: heating up the device, 5 more minutes to wait. Done. Checking cpufreq OPP again. Done (12 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Too much other background activity: 0% avg, 6% max -> https://tinyurl.com/mr2wy5uv * Throttling / frequency capping (under-voltage) occured -> https://tinyurl.com/4ky59sys / https://tinyurl.com/3j2c66kd Full results uploaded to https://0x0.st/XRKl.txt # Raspberry Pi Compute Module 5 Rev 1.0 Tested with sbc-bench v0.9.68 on Wed, 27 Nov 2024 15:17:58 +0700. Full info: [https://0x0.st/XRKl.txt](http://0x0.st/XRKl.txt) ### General information: Information courtesy of cpufetch: SoC: Broadcom BCM2712 Technology: 16nm Microarchitecture: Cortex-A76 Max Frequency: 2.400 GHz Cores: 4 cores Features: NEON,SHA1,SHA2,AES,CRC32 BCM2712, Kernel: aarch64, Userland: arm64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 1500 2400 Cortex-A76 / r4p1 1 0 0 1500 2400 Cortex-A76 / r4p1 2 0 0 1500 2400 Cortex-A76 / r4p1 3 0 0 1500 2400 Cortex-A76 / r4p1 4041 KB available RAM ### Governors/policies (performance vs. idle consumption): Original governor settings: cpufreq-policy0: performance / 2400 MHz (conservative ondemand userspace powersave performance schedutil / 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400) Tuned governor settings: cpufreq-policy0: performance / 2400 MHz Status of performance related policies found below /sys: /sys/module/pcie_aspm/parameters/policy: default [performance] powersave powersupersave ### Clockspeeds (idle vs. heated up): Before at 73.2°C: cpu0 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2399 After at 84.8°C (throttled): cpu0 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2403 ### Performance baseline * memcpy: 5304.3 MB/s, memchr: 13456.6 MB/s, memset: 11936.3 MB/s * 16M latency: 119.0 118.8 117.2 115.3 122.0 119.1 139.2 134.3 * 128M latency: 135.0 134.2 136.5 141.3 135.2 134.0 135.7 136.4 * 7-zip MIPS (3 consecutive runs): 9831, 9085, 8992 (9300 avg), single-threaded: 3191 * `aes-256-cbc 540403.95k 1003620.69k 1256036.52k 1332896.09k 1365554.52k 1367932.93k` * `aes-256-cbc 540634.79k 1003600.96k 1256047.70k 1332894.72k 1365325.14k 1368255.15k` ### PCIe and storage devices: * Raspberry RP1 PCIe 2.0 South Bridge: Speed 5GT/s, Width x4, driver in use: rp1, ASPM Disabled * 238.5GB "SAMSUNG MZ9LQ256HBJD-00BVL" SSD as /dev/nvme0: Speed 8GT/s, Width x1 (downgraded), 0% worn out, drive temp: 40°C, ASPM Disabled * 29.1GB "Samsung BJTD4R" HS400 Enhanced strobe eMMC 5.1 card as /dev/mmcblk0: date 07/2024, manfid/oemid: 0x000015/0x0100, hw/fw rev: 0x0/0x0300000000000000 ### Swap configuration: * /var/swap on /dev/nvme0n1p2: 200.0M (0K used) ### Software versions: * Debian GNU/Linux 12 (bookworm) * Build scripts: http://archive.raspberrypi.com/debian/ bookworm main * Compiler: /usr/bin/gcc (Debian 12.2.0-14) 12.2.0 / aarch64-linux-gnu * OpenSSL 3.0.15, built on 3 Sep 2024 (Library: OpenSSL 3.0.15 3 Sep 2024) * ThreadX: 26826259 / 2024/09/23 14:02:56 ### Kernel info: * `/proc/cmdline: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe smsc95xx.macaddr=2C:CF:67:B2:8D:E8 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=ttyAMA10,115200 console=tty1 root=PARTUUID=c15065e6-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles` * Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl * Vulnerability Spectre v1: Mitigation; __user pointer sanitization * Vulnerability Spectre v2: Mitigation; CSV2, BHB * Kernel 6.6.51+rpt-rpi-2712 / CONFIG_HZ=250 All known settings adjusted for performance. Device now ready for benchmarking. Once finished stop with [ctrl]-[c] to get info about throttling, frequency cap and too high background activity all potentially invalidating benchmark scores. All changes with storage and PCIe devices as well as suspicious dmesg contents will be reported too. Time fake/real load %cpu %sys %usr %nice %io %irq Temp VCore PMIC DC(V) 15:18:04: 2400/2400MHz 3.33 2% 0% 2% 0% 0% 0% 78.2°C 0.8948V 3.0W 5.12V 15:19:04: 2400/2400MHz 1.22 0% 0% 0% 0% 0% 0% 70.5°C 0.8948V 2.9W 5.12V Cleaning up. Done. Checking cpufreq OPP again. Done. Clockspeeds now at 73.8°C: cpu0 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2399 Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Throttling / frequency capping (under-voltage) occured -> https://tinyurl.com/4ky59sys / https://tinyurl.com/3j2c66kd Querying ThreadX on RPi for thermal or undervoltage issues: 11100000000000000000 ||| |||_ under-voltage ||| ||_ currently throttled ||| |_ arm frequency capped |||_ under-voltage has occurred since last reboot ||_ throttling has occurred since last reboot |_ arm frequency capped has occurred since last reboot |
หมายเหตุ : ชุดพัฒนาอยู่กลางแจ้งมีอุณหภูมิรอบข้างประมาณ 32°C นี่คืออุณหภูมิของ CPU จาก rpimonitor ระหว่างการทดสอบ
จากการดูบันทึก, ความถี่ของ CPU ลดลงต่ำสุดที่ 1.5 GHz ระหว่างการทดสอบ 7-zip:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
System health while running 7-zip multi core benchmark: Time fake/real load %cpu %sys %usr %nice %io %irq Temp VCore PMIC DC(V) 15:10:35: 2400/2400MHz 1.07 0% 0% 0% 0% 0% 0% 76.5°C 0.8945V 3.4W 5.12V 15:10:45: 2400/2256MHz 1.67 92% 0% 92% 0% 0% 0% 83.7°C 0.8948V 5.3W 5.11V 15:10:56: 2400/1500MHz 2.03 94% 0% 93% 0% 0% 0% 84.2°C 0.8958V 6.0W 5.11V 15:11:06: 2400/1500MHz 2.33 90% 0% 89% 0% 0% 0% 84.8°C 0.8953V 5.5W 5.11V 15:11:17: 2400/2201MHz 2.74 97% 0% 96% 0% 0% 0% 84.8°C 0.7489V 3.2W 5.13V 15:11:28: 2400/2201MHz 3.15 94% 0% 94% 0% 0% 0% 85.3°C 0.8950V 5.2W 5.13V 15:11:38: 2400/1500MHz 3.44 94% 0% 93% 0% 0% 0% 83.2°C 0.8961V 5.7W 5.12V 15:11:48: 2400/2146MHz 3.53 93% 0% 92% 0% 0% 0% 83.2°C 0.8932V 5.1W 5.10V 15:12:01: 2400/1500MHz 3.68 93% 1% 91% 0% 0% 0% 85.3°C 0.7497V 4.1W 5.13V 15:12:12: 2400/1500MHz 3.73 96% 0% 96% 0% 0% 0% 85.9°C 0.7497V 3.7W 5.12V 15:12:23: 2400/2146MHz 3.86 94% 0% 93% 0% 0% 0% 84.2°C 0.7505V 4.0W 5.15V 15:12:33: 2400/2256MHz 3.88 96% 0% 95% 0% 0% 0% 83.2°C 0.7497V 3.0W 5.15V 15:12:46: 2400/1500MHz 3.90 88% 1% 86% 0% 0% 0% 84.8°C 0.8948V 5.6W 5.12V |
พัดลมหมุนที่ความเร็วสูงสุด แต่ก็ยังไม่เพียงพอ ฉันจะทำการทดสอบใหม่ในที่ร่ม จากนั้นจะทดสอบอีกครั้งโดยนำบอร์ดออกจากเคสแล้วใช้ Cooler (official) ฉันจะพยายามหาซื้อ CM5 active cooler จาก EDATEC ตามที่แสดงด้านล่าง
ทางบริษัทได้ทำการทดสอบที่อุณหภูมิ 25°C โดยใช้ sysbench และอุณหภูมิของ CPU สูงสุดอยู่ที่ประมาณ 60°C เมื่อใช้ active cooler
บริษัทยังได้ทดสอบการตั้งค่าเดียวกันที่อุณหภูมิ 60°C และRaspberry Pi CM5 (ไม่มีฮีทซิงค์) สามารถทำงานได้เพียงประมาณ 16 นาทีก่อนที่จะหยุดทำงาน แต่เมื่อใช้ active cooler อุณหภูมิจะคงที่ที่ 74°C ในสภาพแวดล้อมดังกล่าว
เราจะทำการทดสอบเพิ่มเติมใน Part 2, ฉันขอขอบคุณ Raspberry Pi ที่ส่ง Development Kit for CM5 มาให้รีวิว สามารถหาซื้อได้ในราคา 5,400฿ จาก Cytron
แปลจากบทความภาษาอังกฤษ : A first look at the Raspberry Pi Development Kit for CM5
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT