外设使用¶
WiFi¶
* RV1109/RV1126
平台默认使用 connman
管理 WiFi,而且 WiFi 的核心进程 wpa_supplicant
的启动方法由它启动:
ps -ef
#可以看到下面两个进程
connmand #它使用dbus跟wpa_supplicant进行通信
wpa_supplicant -u #打开支持dbus通信
标准使用方法:通过
RV1126/RV1109
的 web 界面进行 WiFi 操作,参考RV1109/RV1126
平台的相关文档:终端简单测试方法如下:
killall ipc-daemon netserver
connmanctl
connmanctl> enable wifi
connmanctl> scan wifi #可以多次扫描
connmanctl> scan wifi #可以多次扫描
connmanctl> agent on
connmanctl> services
#列出扫描到的 wifi 列表
connmanctl>
*AO yyz123
NETGEAR75-5G wifi_c0847daf6f42_4e45544745415237352d3547_managed_psk
aaabbb wifi_c0847daf6f42_616161626262_managed_psk
HiWiFi-Free wifi_c0847daf6f42_204869576946692d46726565_managed_none
Fang-HiWiFi wifi_c0847daf6f42_46616e672d486957694669_managed_psk
yyz123 wifi_c0847daf6f42_79797a313233_managed_psk
connmanctl> connect wifi_c0847daf6f42_4e45544745415237352d3547_managed_psk
#假如要连接上面 NETGEAR75-5G,则 connect 的参数为后面的 wifixxx_psk
connmanctl>
Connected wifi_c0847daf6f42_4e45544745415237352d3547_managed_psk #如果连接成功则会有这个打印
connmanctl> quit #退出连接模式
ifconfig wlan0
#可以看到wlan0的IP地址
如果不想用connman,而使用传统的
wpa_supplicant/wpa_cli
的方式,则进行如下操作
#修改 wpa_supplicant.conf 配置文件
vi /etc/wpa_supplicant.conf
#将 SSID 替换成WiFi名称
#将 PASSWORD 替换成 WiFi 密码
udhcpc -i wlan0 #获取 IP 地址
4G 模组¶
查看 EC20 4G 模组套件是否已经加载
#加载成功会出现以下 4 个 USB 接口
ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3
如果没有加载成功,请检查内核是否打开以下的配置
Symbol: USB_SERIAL_OPTION [=y]
Type : tristate
Prompt: USB driver for GSM and CDMA modems
Location:
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> USB Serial Converter support (USB_SERIAL [=y])
Defined at drivers/usb/serial/Kconfig:558
Depends on: USB_SUPPORT [=y] && USB [=y] && USB_SERIAL [=y]
Selects: USB_SERIAL_WWAN [=y]
如果4G模块上不了网,请检查内核是否打开以下配置
CONFIG_USB_USBNET
CONFIG_USB_NET_QMI_WWAN
查看EC20 4G网卡是否存在
ifconfig wwan0
声卡¶
EarPhone && Speak¶
EarPhone 和 Speak 均采用双声道接口
使用 aplay 命令播放 wav 格式音频
#path-to 表示存放音频的绝对路径
aplay /path-to/audio-name.wav
Mic¶
Mic 默认是关闭的,使用时需要将其打开,通过以下操作进行
#命令设置默认录制声卡通道
amixer cset numid=2,iface=MIXER,name='Capture MIC Path' 1
#图形界面设置默认录制声卡通道
alsamixer
#将 Capture MIC Path 设置为 Main Mic
Mic录制音频
arecord -l #查看所有可用的MIC设备
arecord -Dhw:0,0 -f cd -d 10 /path-to/audio.wav #选择声卡并录制音频
#注:Mic 只支持单声道录音
MIPI-CSI¶
MIPI-CSI摄像头需要购买转接板
v4l2接口操作MIPI-CSI摄像头
#判断驱动 probe 状态 RKISP 如果 probe 成功,会有 video 及 media 设备存在于 /dev/ 目录下。
#系统中可能存在多个 /dev/video 设备,通过 /sys 可以查询到RKISP注册的 video 节点。
grep '' /sys/class/video4linux/video*/name
#与之对应的是 rkispp_scale0 节点
#v4l2-ctl抓取一帧图片并保存在/tmp/cif.out
v4l2-ctl -d /dev/video14 \
--set-fmt-video=width=1920,height=1080,pixelformat=NV12 \
--stream-mmap=3 \
--stream-skip=3 \
--stream-to=/tmp/cif.out \
--stream-count=1 \
--stream-poll
#v4l2-ctl抓取10帧连续图片作为一段视频并保存在/tmp/test.yuv
v4l2-ctl -d /dev/video14 --try-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap=3 --stream-to=/tmp/test.yuv --stream-count=10 --stream-poll
#Linux PC使用ffplay播放抓取到的视频
ffplay -f rawvideo -video_size 1920x1080 test.yuv
访问网络码流 使用支持 RTSP 或 RTMP 的播放器访问,例如( VLC 播放器)。
RTSP访问地址:
rtsp://设备IP地址/live/mainstream
rtsp://设备IP地址/live/substream
rtsp://设备IP地址/live/thirdstream
RTMP访问地址:
rtmp://设备IP地址:1935/live/substream
例:VLC播放器预览RTSP流
#注:需要安装VLC播放器
vlc rtsp://设备IP地址/live/mainstream
通过网页访问设备信息 打开 Web 浏览器(推荐 Chrome 浏览器)访问地址:
http://设备IP地址
#用户名和密码均是admin
网页端详细的操作说明请参考 SDK 目录 docs
下的文档 Rockchip_Instructions_Linux_Web_Configuration_CN.pdf
。
MIPI-DSI¶
CORE-1109-JD4/CORE-1126-JD4适配的屏幕型号为:DM-M10R800 屏幕购买链接:http://store.t-firefly.com/goods.php?id=80
屏幕转向
#指定QT输出平台并使屏幕顺时针转向90°
export QT_QPA_PLATFORM=linuxfb:rotation=90
如果屏幕出现花屏,或者不显示的情况。请检查LCD排线是否有问题,更换优质材质的短排线能解决花屏问题。
LED¶
选择 GPIO 口,修改内核设备树,添加自定义 LED 灯设备节点。
vim sdk/kernel/arch/arm/boot/dts/rv1126-firefly-ai-cam.dts
# 参考如下配置添加 LED 节点。
leds {
compatible = "gpio-leds";
work {
label = "firefly:blue:power";
linux,default-trigger = "ir-power-click";
gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&led_power>;
default-state = "on";
};
user {
label = "firefly:yellow:user";
linux,default-trigger = "ir-user-click";
gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&led_user>;
default-state = "on";
};
};
# pinctrl 需要添加 GPIO 复用控制
leds {
led_power: led-power {
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
led_user: led-user {
rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
# 修改完成后编译升级内核
控制 LED
echo 1 > /sys/class/leds/firefly:yellow:user/brightness # 亮
echo 0 > /sys/class/leds/firefly:yellow:user/brightness # 灭