The CM4-WRT-A software repository https://github.com/MyTechCatalog/cm4-wrt-a includes a service called picod whose purpose is to communicate with the Raspberry Pi Pico, collecting periodic measurements from six temperature sensors and system fan tachometer on the CM4-WRT-A board.
Viewing Board Status
The status of the board can be queried by running the following command: ubus call picod status
. The result of which, is shown below:
root@gateway2:~# ubus call picod status
{
"fan_pwm_pct": {
"System_Fan_J17": 50,
"CM4_FAN_J18": 50
},
"watchdog": {
"is_enabled": "false",
"timeout_sec": 10,
"max_retries": 0
},
"temperature_c": {
"PCIe_Switch": "34.9",
"M.2_Socket_M_J5": "31.0",
"M.2_Socket_E_J3": "30.5",
"M.2_Socket_M_J2": "29.6",
"RPi_Pico": "34.6",
"Under_CM4_SOC": "34"
},
"tachometer_rpm": {
"System_Fan_J17": 3480,
"CM4_FAN_J18": 0
}
}
Checkout the OpenWrt ubus
technical reference: https://openwrt.org/docs/techref/ubus
Listing picod Procedures/Methods and Arguments
To find out which procedures/methods the picod
service provides, as well as their argument signatures, run this command: ubus -v list picod
Changing the FAN Speed
You can change the fan speed by updating its PWM setting. In the example below, a call to the fan_pwm
method of picod
is made with the argument fan_pwm_pct
set to 80 percent. The default PWM setting is 50 percent.
root@gateway2:~# ubus call picod fan_pwm '{"fan_name":"System_Fan_J17", "fan_pwm_pct":50}'
Fetching the Current PWM Setting
If the fan_pwm_pct
argument is omitted, its current value is returned.
root@gateway2:~# ubus call picod fan_pwm '{"fan_name":"System_Fan_J17"}'
Enabling/Disabling the Watchdog
The watchdog is disabled by default, however you can enable it via a setting in the picod
config file (/etc/picod.conf), or on the command line as shown in the example below:
root@gateway2:~# ubus call picod watchdog '{"is_enabled": true, "timeout_sec": 10, "max_retries": 0}'
{
"is_enabled": "true",
"timeout_sec": 10,
"max_retries": 0
}
Subscribing to picod Events
You can also subscribe to picod notifications to receive temperature and fan speed updates:
root@gateway2:~# ubus subscribe picod
Changes made via the command-line will not persist after a reboot or restart of the service picod
. If you would like to make the changes permanent, update the config file instead (/etc/picod.conf).