Headless Ubuntu Server Installation with GeniCam cameras

To test GeniCam cameras, I installed headless Linux, Ubuntu Server 16.04.4 LTS, on a laptop, without graphics, to mimic our AWS servers, none of which have GUI. The whole process takes about one hour, excluding research time, of course. Some key notes are listed below.

  1. Download: https://www.ubuntu.com/download/server  over 800M, only half size of the Ubuntu desktop version.
  2. Bootable USB: created from the .iSO above, by rufus-2.18p.exe
  3. Boot from USB: Boot in UEFI mode. Booting from CD needs legacy mode.
  4. Boot manager: GRUB2 version 2.02
  5. Partitions: sda1: UEFI boot partition, sda5: Linux OS boot volume, I set it to 10G. The default AWS Root Device is only 8G
  6. Wireless: different from Desktop Network Manager. Some key commands are: (wlp6s0 is wireless interface name)
    1. sudo ifconfig wlp6s0 up
    2. sudo iwlist wlp6s0 scan
    3. sudo iwconfig wlp6s0 essid “RwAtt” key mypassword
    4. sudo dhclient -v wlp6s0
  7. GeniCam Camera driver installation(Smartek as example):
    1. install libnl-route-3-200
    2. build kernel module from source, which ends up as /lib/modules/4.4.0-116-generic/kernel/drivers/video/u3vdrv.ko
    3. add configuration to /etc/ld.so.conf.d
  8. Pitfalls: I always get boot failure with message “no bootable device found” whenever trying to if=/dev/sda5, or changing boot mode to Legacy then back to UEFI. I think it’s BIOS bug. Fix: tell BIOS the GRUB binary location by typing in \EFI\ubuntu\grubx64.efi in boot options in BIOS

What does GeniCam do for us?

To customize the content of billboard in sport games, e.g. for audience in different countries.

We change part of the video, namely the billboard content, while streaming the game. The end result is the billboard in streamed game video plays different content from the physical billboard on the game venue.

Our current cameras, all IP cameras, have two problems for this job:

  1. content needs to be decoded to process billboard, and then re-encoded, which is too much load on server
  2. hard to sync due to the delay introduced by codec and internet.

GeniCam cameras send raw video to our on site server through fiber network, with no decoding and ignorable delay. The cameras are connected to an IP strobe controller, as seen on picture.

Some components in addition to streaming are:

  1. Video process: OpenCV for object detection and Bayer pixel manipulation
  2. 3D billboard content generation: OpenGL
  3. Pull video from the cameras: GeniCam SDK


Comparing HLS and MPEG-DASH

After two years of HLS streaming, I still don’t see significant advantages on MPEG-DASH.
1. Standard: HLS made it’s way to rfc8216. in 2017.
2. Live subtitles: HLS can not only do VOD, but live streams too.
3. HLS made effort by providing HLS fMP4 so that streaming servers don’t have to provide duplicated copies of media file (.ts and .m4s) in order to satisfy both DASH and HLS clients.

Literally, what does YUV420 mean?

We know what YUV420 is, but literally what does the 0 mean?

In short, 0 means 0 uv values are sampled in the second row.


4: for each 4 pixels in each row

2: 2 uv samples on first row.

0: 0 rv samples on second row: reusing uv samples on first row.

Therefore, for YUV422, second 2 means second row is sampled the same way as the first row.