Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

RDK-C Build Instruction for RPI-3


Dunfell:

RDK-C rdk-next Yocto 3.1 dunfell build for Raspberrypi

Validation Procedure of RMS with RTSP streaming

...

Code Block
languagebash
titleConsole output
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1

network={
ssid="XXXX"
psk="YYYYYYYYY"
}


STEP 2:

Reboot the Target

After Reboot don't do step 1 and 2.

Note : Step 1 & 2 is only applicable for fresh target boot-up with new image.

STEP 3:

Modify needed resolution in rms configuration file

Supported Resolution:

SD:

Width - 640 , Height - 480

Width - 720 , Height - 576

HD:

Width - 1280 , Height - 720

FULL HD  :

...

Add  below configuration in end of the /boot/config.txt file

dtoverlay=imx219

core_freq_min=250

Code Block
languagebash
titleConsole output
vi /boot/config.txt

dtoverlay=imx219
core_freq_min=250 


STEP 3:

  1. RMS with RTSP validation using v4l2

Disable dtoverlay and minimum freq configuration in config.txt file

Modify resolution in below configuration file

cd /usr/local/rms/bin

vi rms.conf

Code Block
languagebash
titlev4l2 : Console output
RRSIP=XXX.XXX.XXX.XXX
RRSPORT=81
ROOMID=rpi0
RRSSSL=0
WIDTH=1280
HEIGHT=72

After resolution modification need to reboot the target.

Note: This step is not necessary,it is depends on your resolution validation.

STEP 4:

WiFi connection is must needed for RMS validation.

Check WiFi connection by using below command.

ifconfig

vi /boot/config.txt

#dtoverlay=imx219
#core_freq_min=250 


Run mediastreamer binary with v4l2src configuration.

Code Block
languagebash
titlev4l2 : Console output
vi /lib/rdk/startMST.sh

#Run mediastreamer binary in background
# 1. To validate streaming with v4l2 need to give "mediastreamer v4l2src &"
# 2. To validate streaming with libcamera need to give "mediastreamer libcamerasrc &"
# If we change 1 and 2, need to reboot the target and validate streaming.

mediastreamer v4l2src &


        2. RMS with RTSP validation using libcamera

Enable dtoverlay and minimum freq configuration in config.txt file

Code Block
languagebash
titlelibcamera : Console output
vi /boot/config.txt

dtoverlay=imx219
core_freq_min=250 


Run mediastreamer binary with libcamerasrc configuration.

Code Block
languagebash
titlelibcamera : Console output
vi /lib/rdk/startMST.sh

#Run mediastreamer binary in background
# 1. To validate streaming with v4l2 need to give "mediastreamer v4l2src &"
# 2. To validate streaming with libcamera need to give "mediastreamer libcamerasrc &"
# If we change 1 and 2, need to reboot the target and validate streaming.

mediastreamer libcamerasrc &


STEP 4:

Reboot the Target

After Reboot don't do step 1 and 2.

Note : Step 1 & 2 is only applicable for fresh target boot-up with new image.


STEP 5:

Modify needed resolution in rms configuration file

Supported Resolution:

SD:

Width - 640 , Height - 480

Width - 720 , Height - 576

HD:

Width - 1280 , Height - 720

FULL HD  :

Width - 1920 , Height - 1080


Modify resolution in below configuration file

cd /usr/local/rms/bin

vi rms.conf

Code Block
languagebash
titleConsole output
RRSIP=XXX.XXX.XXX.XXX
RRSPORT=81
ROOMID=rpi0
RRSSSL=0
WIDTH=1280
HEIGHT=72

After resolution modification need to reboot the target.

Note: This step is not necessary,it is depends on your resolution validation.


STEP 6:

WiFi connection is must needed for RMS validation.

Check WiFi connection by using below command.

ifconfig

Code Block
languagebash
titleConsole output
root@raspberrypi3-rdk-camera:~# ifconfig
eth0      Link encap:Ethernet  HWaddr B8:27:EB:87:67:91  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
Code Block
languagebash
titleConsole output
root@raspberrypi3-rdk-camera:~# ifconfig
eth0      Link encap:Ethernet  HWaddr B8:27:EB:87:67:91  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:89842 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89842 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:25639748 (24.4 MiB)  TX bytes:25639748 (24.4 MiB)

wlan0     Link encap:Ethernet  HWaddr B8:27:EB:D2:32:C4  
          inetRX addr:192.168.43.146  Bcast:192.168.43.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1packets:0 errors:0 dropped:0 overruns:0 frame:0
          RXTX packets:440 errors:0 dropped:0 overruns:0 framecarrier:0
          TXcollisions:0 packets:103 errorstxqueuelen:1000 
          RX bytes:0 dropped:0 overruns(0.0 B)  TX bytes:0 carrier:0
(0.0 B)

lo        Link  collisions:0 txqueuelen:1000encap:Local Loopback  
          RXinet bytes:4484 (4.3 KiB)  TX bytes:10216 (9.9 KiB)

STEP 5:

check loaded module by using below command

lsmod

Code Block
languagebash
titleConsole output
root@raspberrypi3-rdk-camera:~# lsmod
Moduleaddr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:89842 errors:0 dropped:0 overruns:0 frame:0
       Size  Used by
bcm2835_v4l2      TX packets:89842 errors:0 dropped:0 overruns:0 carrier:0
     40563     collisions:0
v4l2_common txqueuelen:1000 
          RX bytes:25639748  4809(24.4 MiB)  1 bcm2835_v4l2
videobuf2_vmalloc  TX bytes:25639748 (24.4 MiB)

wlan0     6264Link encap:Ethernet 1 bcm2835_v4l2
videobuf2_memops    HWaddr B8:27:EB:D2:32:C4  
     1528  1 videobuf2_vmalloc
videobuf2_v4l2    inet addr:192.168.43.146    12640  1 bcm2835_v4l2
videobuf2_coreBcast:192.168.43.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST 27389 MTU:1500 2 bcm2835_v4l2,videobuf2_v4l2
videodev Metric:1
          RX packets:44 errors:0  154457  4 v4l2_common,videobuf2_core,bcm2835_v4l2,videobuf2_v4l2
mediadropped:0 overruns:0 frame:0
          TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
     23307  1 videodev
brcmfmac  collisions:0 txqueuelen:1000 
          258239RX  0
brcmutil bytes:4484 (4.3 KiB)  TX bytes:10216 (9.9 KiB)


STEP 7:

check loaded module by using below command

lsmod

Code Block
languagebash
titleConsole output
root@raspberrypi3-rdk-camera:~# lsmod
Module         7590  1 brcmfmac
snd_bcm2835      Size  Used by
bcm2835_v4l2   21405  0
cfg80211      40563  0
v4l2_common      492836  1 brcmfmac
snd_pcm    4809  1 bcm2835_v4l2
videobuf2_vmalloc         798726264  1 sndbcm2835_bcm2835v4l2
rfkillvideobuf2_memops        1528  1 videobuf2_vmalloc
videobuf2_v4l2        19936 12640 3 cfg80211
snd_timer 1 bcm2835_v4l2
videobuf2_core         27389     20294  1 snd_pcm
snd2 bcm2835_v4l2,videobuf2_v4l2
videodev              154457      52949  3 snd_timer,snd_bcm2835,snd_pcm
lirc_rpi4 v4l2_common,videobuf2_core,bcm2835_v4l2,videobuf2_v4l2
media                6840  0
lirc_dev23307  1 videodev
brcmfmac              258239  0
brcmutil                75337590  1 lirc_rpibrcmfmac
uio_pdrv_genirqsnd_bcm2835            346921405  0
uiocfg80211              492836  1 brcmfmac
snd_pcm     8703  1 uio_pdrv_genirq
fixed                   2876  0
sch_fq_codel            9662  2
ipv6                  384101  18

STEP 6:

check camera device there or not by using below command

         79872  1 snd_bcm2835
rfkill                 19936  3 cfg80211
snd_timer              20294  1 snd_pcm
snd                    52949  3 snd_timer,snd_bcm2835,snd_pcm
lirc_rpi                6840  0
lirc_dev                7533  1 lirc_rpi
uio_pdrv_genirq         3469  0
uio                     8703  1 uio_pdrv_genirq
fixed                   2876  0
sch_fq_codel            9662  2
ipv6                  384101  18


STEP 8:

check camera device there or not by using below command

ls /dev/video0

Code Block
languagebash
titleConsole output
root@raspberrypi0-rdk-camera:~# ls /dev/video0 
/dev/video0


STEP 9:

Need to stop below service file to validate gstreamer based live streaming

systemctl stop rms-launcher.service

systemctl stop pipewire-launcher.service

systemctl stop mst-launcher.service


Need to do below changes in config.lua file

vi /usr/local/rms/config/config.lua

Code Block
languagebash
titleConsole output: Config.lua change
-
+	]]--
 				-- RTSP
 				{
-					ip="127.0.0.1",
+					ip="0.0.0.0",
 					port=5544,
 					protocol="inboundRtsp",
 				},
-
+	--[[


After stoping those service file, then we need to start/trigger below service and binaries.

Code Block
languagebash
titleConsole output: Trigger mediastreamer
root@raspberrypi3-rdk-camera:~# systemctl start mst-launcher


To start RMS binary , We need to go cd /usr/local/rms/bin directoryls /dev/video0

Code Block
languagebash
titleConsole output: Trigger RMS
root@raspberrypi0root@raspberrypi3-rdk-camera:~# lscd /dev/video0 
/dev/video0

STEP 7:

Check mediastreamer and rms binaries are running or not before RTSP streaming validation.

/usr/local/rms/bin/
root@raspberrypi3-rdk-camera:/usr/local/rms/bin# ./rdkcmediaserver ../config/config.lua &


Need to check mediastreamer and RMS running status with below commandps -Af | grep media

Code Block
languagebash
titleConsole output: Check status
root@raspberrypi3-rdk-camera:~# ps -Af | grep media
root      2396  197   1  1 13 1015:5730 ?        00:0400:4000 mediastreamer v4l2src
root      10072555  1613   1  3 10:57 ?   30 15:31 pts/0     00:00:01:05 ./rdkcmediaserver ../config/config.lua
root      109592574  19431613  0 1115:3231 ttyS0pts/0    00:00:00 grep media

STEP 810:

Enter into the Telnet console with telnet command

...

Code Block
languagebash
titleConsole output
listconfig
Command entered successfully!
Run-time configuration

    dash: []
    hds: []
    hls: []
    metalistener: []
    mss: []
    process: []
    pull: 
      -- 
        configId: 1
        localStreamName: stream2
        status: 
          current: 
            description: Streaming
            uniqueStreamId: 1
        uri: sercom://0
    push: []
    record: []
    webrtc: []


STEP 911:

At that same telnet console,need to give the below command for RTSP  streaming

pushStream uri=rtsp://camera_ip:5544 localStreamName=stream2

Example:

pushStream uri=rtsp://192.168.43.146:5544 localStreamName=stream2

Code Block
languagebash
titleConsole output
pushStream uri=rtsp://192.168.43.146:5544 localStreamName=stream2
Command entered successfully!
Local stream stream2 enqueued for pushing to rtsp://192.168.43.146:5544 as stream2

    configId: 4
    forceTcp: false
    keepAlive: true
    localStreamName: stream2
    targetStreamName: stream2
    targetStreamType: live
    targetUri: 
      fullUri: rtsp://192.168.43.146:5544
      port: 5544
      scheme: rtsp


STEP 1012:

On VLC player, for RTSP streaming

...

Note: VLC player available PC and RPI target should run in same network.

Limitations

  •  RMS validation with libcamera works only with SD resolution.
  • Observed 2 to 3 sec's of glitches in RMS with RTSP validation using both v4l2 and libcamera