On this page you can find steps how to send HDMI Input video over WiFi. Then we will play the stream on a PC connected to the WiFi network. These steps was originally created by Dale Matthews. Thank you Dale.
Here is a list of items which we used:
iMX6 TinyRex Development kit
PCIe WiFi card Intel 4965AGN with 2 antennae
HDMI video source connected to TinyRex board
PC where stream will be played
Router with WiFi support
1. Prepare the board
Before you connect the power, plug in PCIe WiFi card. Do not forget to use antennae (plug them into coaxial connectors 1 and 3). Connect HDMI input source. Boot up the board.
2. Connect iMX6 TinyRex to the network
Check if WiFi card was detected:
# dmesg | grep iwl4965
iwl4965: Intel(R) Wireless WiFi 4965 driver for Linux, in-tree:
iwl4965: Copyright(c) 2003-2011 Intel Corporation
iwl4965 0000:01:00.0: Detected Intel(R) Wireless WiFi Link 4965AGN, REV=0x4
iwl4965 0000:01:00.0: device EEPROM VER=0x36, CALIB=0x5
iwl4965 0000:01:00.0: Tunable channels: 13 802.11bg, 19 802.11a channels
iwl4965 0000:01:00.0: loaded firmware version 228.61.2.24
Enable wireless networking (you may need to run it twice if any message occurs):
ip link set wlan0 up
We will use feature connmanctl to connect to the network. We will enable WiFi and scan for available networks first:
# connmanctl enable wifi
Enabled wifi
# connmanctl scan wifi
Scan completed for wifi
List the networks:
# connmanctl services
s15as wifi_0013e8442b51_7331356173_managed_psk
AMS wifi_0013e8442b51_414d53_managed_psk
Daryl wifi_0013e8442b51_446172796c_managed_psk
SuperBarter wifi_0013e8442b51_5375706572426172746572_managed_psk
To connect to the password protected network we will start agent routine. We need to jump into interactive mode:
# connmanctl
connmanctl> agent on
Agent registered
Find your network from available services and copy its hash string (e.g. our network is called “s15as” with string “wifi_0013e8442b51_7331356173_managed_psk”). Type the network password when you will be asked:
connmanctl> connect wifi_0013e8442b51_7331356173_managed_psk
Passphrase = [ Type=psk, Requirement=mandatory ]
Passphrase? <YOUR PASSWORD>
connmanctl> wlan0: authenticate with d4:ca:6d:6b:64:57
wlan0: send auth to d4:ca:6d:6b:64:57 (try 1/3)
wlan0: authenticated
wlan0: waiting for beacon from d4:ca:6d:6b:64:57
wlan0: associate with d4:ca:6d:6b:64:57 (try 1/3)
wlan0: RX AssocResp from d4:ca:6d:6b:64:57 (capab=0x431 status=0 aid=2)
IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
wlan0: associated
Connected wifi_0013e8442b51_7331356173_managed_psk
Quit the interactive mode
connmanctl> quit
and check if IP address was assigned:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0D:15:00:DE:C7
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
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:700 (700.0 B) TX bytes:700 (700.0 B)
wlan0 Link encap:Ethernet HWaddr 00:13:E8:44:2B:51
inet addr:192.168.120.99 Bcast:192.168.120.255 Mask:255.255.255.0
inet6 addr: fe80::213:e8ff:fe44:2b51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2727 (2.6 KiB) TX bytes:10266 (10.0 KiB)
We can also ping the PC where video will be played:
# ping -c 4 192.168.10.90
PING 192.168.10.90 (192.168.10.90): 56 data bytes
64 bytes from 192.168.10.90: seq=0 ttl=63 time=5.802 ms
64 bytes from 192.168.10.90: seq=1 ttl=63 time=1.627 ms
64 bytes from 192.168.10.90: seq=2 ttl=63 time=1.003 ms
64 bytes from 192.168.10.90: seq=3 ttl=63 time=0.986 ms
--- 192.168.10.90 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.986/2.354/5.802 ms
We are successfully connected to the network. Filesystem will remember the settings and autoconnect to the network next time.
3. Prepare PC where steam will be played
For PC you can use any operating system. We will use Ubuntu machine as an example. Before you start, be sure that it is connected to the same network as TinyRex.
Check if you have VLC player installed (search for “vlc” in your package manager). If you did not find it, install it:
sudo apt-get update
sudo apt-get install vlc browser-plugin-vlc
You can also use any other media player which can open SDP files. Now we will create a SDP file
nano tinyrex-streaming-test.sdp
with configuration needed to play the stream (copy and paste this into the file):
v=0
o=- 1223457093460663 1 IN IP4 127.0.0.1
s=RTSP Server
i=Codec00
t=0 0
a=tool:LIVE555 Streaming Media v2008.07.24
a=type broadcast
b=AS:21
a=control:*
a=source-filter: incl IN IP4 127.0.0.1
a=rtcp-unicast: reflection
m=video 5550 RTP/AVP 96
a=rtpmap:96 H264/90000
a=framerate=30
a=fmtp:96 profile-level-id=42001e; sprop-parameter-sets=Z0JAH6aAUAW5AA\\=\\=\\,aM44gAA\\=\;
To start the stream we need to know the PC’s IP address:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1b:24:59:69:a3
inet addr:192.168.10.90 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::21b:24ff:fe59:69a3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:357 errors:0 dropped:0 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44432 (44.4 KB) TX bytes:12096 (12.0 KB)
Interrupt:16
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:70 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5344 (5.3 KB) TX bytes:5344 (5.3 KB)
4. Streaming
Before we start, be sure your router is not blocking port 5550.
Check if HDMI source is active and start the video capture on iMX6 TinyRex board. Do not forget to change udpsink parameter for PC’s IP address (in our case to 192.168.10.90):
gst-launch imxv4l2src ! vpuenc codec=avc bitrate=4000000 ! rtph264pay config-interval=3 pt=96 ! udpsink host=192.168.10.90 port=5550 -v
Now finally you can open prepared SDP file in VLC Player on PC:
vlc tinyrex-streaming-test.sdp
You should now see the stream playing.