NEW Embedded SBC With HDMI – Wireless – MicroSD for Digital Signage

New Low Profile SBC for Embedded Applications

Gateworks is proud to announce the newest member to the Ventana Family of Single Board Computers, the GW5530.

The GW5530 has an extremely low profile and small form factor ideal for applications in Digital Signage and Wireless Multimedia.

Features include:

  • NXP i.MX6 Processor
  • HDMI HD Video Output
  • New UBlox GPS (Optional)
  • Composite Video Input
  • Mini-PCIe Slot for WiFi or Cellular with SIM
  • MicroSD for storage
  • USB OTG
  • Gateworks GSC

To learn more about the GW5530, visit the following link: GW5530 Product Information

Android Lollipop Embedded Software Release

lollipop

Gateworks has just released Android Lollipop support for the Ventana family of Single Board Computers!

Notable updates include:

  • Update to the Android Open Source Project’s 5.1.1 code base
  • Freescale i.MX6 performance and stability improvements
  • New 3.14 based Linux kernel with many improvements
  • Vivante graphics libraries v5.0.11 p7
Gateworks recommends Lollipop for all future Android support.

To get started with Android Lollipop, Click the Link Below:

 

Customizing Android & Yocto Splash Screens

lcd_gateworks_logo

Customizing Android & Yocto Splash Screens

Have you ever wanted to replace that ugly default logo or animation that is shown when your system boots up? Now you can with custom splash screens!

What is a Splash Screen?

  • The logo or image displayed on screen during the boot process of an embedded system

3 Splash Screens can be Customized:

  • Bootloader
  • Linux Kernel
  • Operating System

Why are Splash Screens Important?

  • Splash screen are displayed immediately conveying proper operation and responsiveness to the user
  • Replacing the splash screen logo with a company logo will effectively brand a product for customer deployment

Read more on the Gateworks Software Wiki:
Customizing the Splash Screen

LCD Touchscreens for Gateworks SBCs

lcd

Gateworks offers a LVDS connector on the Ventana Family of Single Board Computers to allow the connection of a LCD touchscreen display. LCD Displays are a great fit for control panel applications as well as Digital Signage. The displays work with Android, OpenEmbedded Yocto, Ubuntu and more.

The LVDS connector has all the necessary pins for the display signaling as well as I2C for touchscreen control.

Gateworks offers a 7-inch LCD Display with a PCAP Touchscreen. This display is great to get started in development as well as for production projects.

All of the cables, adapters and LCD can be found right on the Gateworks Online Shop so getting up and running is very seamless.

Please review the following links for more information:

New Software Release: OpenWrt 16.02

openwrt_logo

Gateworks would like to announce the release & support of OpenWrt 16.02 on the Ventana and Laguna family of Single Board Computers. This OpenWrt release falls under the Designated Driver release of OpenWrt. OpenWrt is a Linux operating system that Gateworks uses for networking centric tasks, wireless access points, router functions, IoT and more. Please review the below updates and highlights and update to OpenWrt 16.02.

OpenWrt 16.02 Updates and Highlights:

  • General:
    • Moved to git for SCM of choice
    • Gateworks System Controller drivers
    • Feeds bumped to 2016-02-17
    • Updated to latest wireless drivers (backports-20151218)
    • IEEE802.11 adhoc throughput increased for HT rates (iw 4.3)
    • Bump to Linux 4.4.0 Kernel
    • busybox-1.24.1
    • gcc-5.2.0
    • binutils-2.25.1
    • Moved from uclibc to musl-1.1.12
  • Ventana:
    • Bump to Linux 4.4.0 Kernel from 3.14.16
    • ~50% increased FEC driver performance
    • l2cache enabled
    • Hardware crypto support
    • squashfs+ubifs overlay for recovery
    • dsa/swconfig support for GW16083
    • HDMI out, no VPU/GPU
    • LVDS out, no VPU/GPU
    • Low-Latency RS485 support
  • Laguna:
    • Bump to Linux 4.4.0 Kernel from 3.10.49
    • GW2393 Support

To get started, Gateworks has posted Pre-Built images on the Wiki page. The wiki page also documents building from source.

Please try OpenWrt 16.02 and contact Gateworks with any questions. Their support team is happy and available to work with you!

Gateworks Product Change Notification

TagCloudHighlightTEMPLATE

Gateworks has world class customer support. Part of this support includes keeping customers up to date with any changes to the single board computers that Gateworks designs and manufactures. Customers expect to be notified of any changes so they can be prepared properly.

Gateworks provides it’s Product Change Notification (PCN) service to notify the customer of any of the following:

  • A new revision of any standard product single board computer.
  • GSC Firmware Updates
  • Pre-Built Firmware that is shipped on standard product single board computers.
  • Hardware Errata

Gateworks has a page on their Wiki site dedicated to PCN notices as well as a mailing list that will automatically email any updates.

For more information and to join the mailing list, please view the PCN Wiki Site.

For customers who require revision locking, Gateworks offers a Specials program. More information can be found on the Specials Program Wiki Site.

There are many ways to stay connected to Gateworks. Gateworks recommends viewing our wiki section that describes all of the ways here.

Embedded Android App & OS Development

Android is growing fast in embedded applications. The Gateworks Android Development kit is a great starting point for customers that need to get going quickly with both the hardware and software.

To aid in Android software development, Gateworks has developed an example Android application showcasing the interaction of the software with the Gateworks Android hardware. The application features support for the user GPIO, LEDs and more. An easy to use Android library is also provided which can be utilized for any custom application development.

Gateworks has documented Android Software on the following wiki pages:

  • OS Development – This wiki page covers items dealing with the lower level operating system. This includes items on the serial console command line such as init scripts, ADB, partitions, command line networking, LED control, GPIO control and other hardware integration.
  • App Development – This wiki page details the building of an Android App (APK file) independent of building the entire Android OS. Topics covered include setting up the Android Studio IDE, writing sample code for a Hello World App, as well as using an external Gateworks code library for accessing low level items through the app such as GPIOs, LEDs and more.
    • Gateworks Android Library – This is a library that allows easy integration to low level system items such as LEDs, GPIO, PWM and voltage and temperature.

Gateworks Android Demo App

Gateworks has used the information above to create a Gateworks Demo App that is publicly available on GitHub here. The app features a user friendly front end for controlling some hardware features on the board utilizing the GateworksUtil library. Screenshots of the app can be seen below:

gateworks-demo

Figure 1. (Above) LED control of the trigger and the on / off state. GPIO as input or output and state.

gateworks-demo_hwmon

Figure 2. (Above) Hardware system statistics

gateworks-demo_pwm

Figure 3. (Above) PWM enable, period and duty cycle.

References:

Linux Wireless AP Configuration

gw5100wireless

Configuring wireless in Linux can be complex. A very common question is how does one configure an IEEE802.11 radio as an Access Point (AP) from the command line interface (CLI). This question is difficult to answer due to evolving wireless technologies. Several tools have been created to aid in configuring these devices, but are generally not user friendly or portable across operating systems (OS).

For example, in the OpenWrt OS, the UCI System allows users to configure their wireless devices easily through the CLI. But because this tool is tightly integrated into OpenWrt, it is not easily portable to other OS’s such as Yocto or Ubuntu. Other OS’s attempt to solve wireless configuration in their own way, but fail to provide an easy solution from the serial console (e.g. using NetworkManager in Ubuntu).

Gateworks has created an open-source script called hostapd-conf that creates configuration files for the Host Access Point Daemon (hostapd), a standard Linux user space daemon that is capable of creating and managing wireless APs. Both tools are provided by default on our Yocto 1.8 BSP. The inspiration came from the simplicity of the tool wpa_passphrase, a simple CLI tool that allows for an easy way to connect to wireless APs.

The hostapd-conf script is written for users wanting to create an AP out of a radio with optional WPA2 encryption. It gathers information on a specified wireless interface through iw and uses the data to generate a proper hostapd.conf file. It has only a few dependencies to run: iw, sed, grep, and cut. It should be noted that the ‘full’ version of these tools are required as opposed to the ‘busybox’ version.

The hostapd-conf script usage is shown below:

root@ventana:~# hostapd-conf --help
hostapd-conf [OPTIONS] <iface> <ssid> <channel> [<htmode>] [<passphrase>]

Options:
 --help           - This help
 --br-name <name> - Name of bridge
 --wds <0|1>      - Enable WDS
 --version        - Print this version: v1.0

hostapd-conf also has the ability to list supported MCS Rates (e.g. HT20, VHT80 etc) per channel that the radio is allowed to emit radiation on. For example, the WLE350NX radio, an 802.11a/b/g/n radio, has the following channels that it may emit on:

root@ventana:~# hostapd-conf wlan0
ERROR: SSID is empty

Available Channel Information on phy2
=====================================
Band 1:
Channel  Freq  Allowed HT Modes
0        0000  HT20 HT40 HT40+ HT40-
1        2412  HT20 HT40 HT40+
2        2417  HT20 HT40 HT40+
3        2422  HT20 HT40 HT40+
4        2427  HT20 HT40 HT40+
5        2432  HT20 HT40 HT40+ HT40-
6        2437  HT20 HT40 HT40+ HT40-
7        2442  HT20 HT40 HT40+ HT40-
8        2447  HT20 HT40 HT40+ HT40-
9        2452  HT20 HT40 HT40+ HT40-
10       2457  HT20 HT40 HT40-
11       2462  HT20 HT40 HT40-

Band 2:
Channel  Freq  Allowed HT Modes
0        0000  HT20 HT40 HT40+ HT40-
36       5180  HT20 HT40 HT40+
40       5200  HT20 HT40 HT40-
44       5220  HT20 HT40 HT40+
48       5240  HT20 HT40 HT40-
149      5745  HT20 HT40 HT40+
153      5765  HT20 HT40 HT40-
157      5785  HT20 HT40 HT40+
161      5805  HT20 HT40 HT40-
165      5825  HT20 HT40 HT40+

From the above output, it is shown that the WLE350NX radio has two bands to select from, 2.4GHz and 5GHz. Each band offers a specific range of channels it can output on with their allowed MCS Rates, which hostapd-conf details out. Please note that the ‘0’ channel is special to hostapd. It enables Automatic Channel Selection (ACS) in order to allow the radio to pick the best channel to emit radiation on.

The following invocation of hostapd-conf will create a configuration file to output at 5.18GHz with 40MHz bandwidth, with an SSID of “wlan0-ssid” and WPA2 passphrase of “nowayinside”:

root@ventana:~# hostapd-conf wlan0 "wlan0-ssid" 36 HT40 "nowayinside"
Settings:
 IFACE:      wlan0
 PHY:        phy2
 SSID:       wlan0-ssid
 CHANNEL:    36
 FREQ:       5180
 BANDS:      1 2
 HWMODE:     a
 HTMODE:     HT40
 PASSPHRASE: nowayinside

Written to hostapd-phy2.conf

The output of the script, hostapd-phy2.conf, now holds the proper configuration required by hostapd to configure the radio to these specifications. Please take care to edit this newly created file manually if your country requires Dynamic Frequency Selection (DFS) for the channel you are emitting on. The following lines may need to be uncommented / edited:

country_code=US
ieee80211d=1
ieee80211h=1

In an example system, four wireless radio’s were connected to a Gateworks GW5400 Single Board Computer: 1x using ath5k, 2x using ath9k, and 1x using ath10k. After following the above steps for each of the radio’s in the system, hostapd was invoked and all four radio’s were configured with different channels and technologies.

By default, hostapd will use the configuration file located at /etc/hostapd.conf. Because of this, first stop any hostapd instance that is running. Then, simply start it as a background process, for example:

root@ventana:~# /etc/init.d/hostapd stop
Stopping HOSTAP Daemon: stopped /usr/sbin/hostapd (pid 14876)
hostapd.
root@ventana:~# hostapd -B hostapd-phy0.conf hostapd-phy1.conf hostapd-phy2.conf hostapd-phy3.conf
Configuration file: hostapd-phy0.conf
Configuration file: hostapd-phy1.conf
Configuration file: hostapd-phy2.conf
Configuration file: hostapd-phy3.conf
[   34.390709] IPv6: ADDRCONF(NETDEV_UP): wlan3: link is not ready
wlan3: interface state UNINITIALIZED->HT_SCAN
[   34.409563] IPv6: ADDRCONF(NETDEV_UP): wlan2: link is not ready
Using interface wlan2 with hwaddr 00:24:2b:38:be:db and ssid "wlan2-ssid"
[   34.473223] IPv6: ADDRCONF(NETDEV_CHANGE): wlan2: link becomes ready
wlan2: interface state UNINITIALIZED->ENABLED
wlan2: AP-ENABLED
[   34.514817] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
wlan0: interface state UNINITIALIZED->HT_SCAN
[   34.542100] IPv6: ADDRCONF(NETDEV_UP): wlan1: link is not ready
wlan1: interface state UNINITIALIZED->HT_SCAN
root@ventana:~# [   34.614847] IPv6: ADDRCONF(NETDEV_CHANGE): wlan3: link becomes ready
[   34.798881] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   35.620978] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready

Other examples may also be found here on our Wireless wiki page. There are examples on how to create a routed AP, bridged AP, and includes other valuable information

References:

Adaptive Bitrate Streaming using GStreamer

Gateworks’ SBCs are widely used for streaming audio and video over the network via Ethernet, 802.11 WiFi, or 4G LTE Cellular. Networks are dynamic, whether from network load, RF interference or signal strength thus throughput will vary requiring intelligent and flexible applications to adjust as necessary.

Adaptive Bitrate Streaming is the concept of adjusting the quality of video and/or audio depending on the quality of the network connection or server load. This type of technology is widely implemented throughout technology today, evident in streaming services like Netflix and YouTube.

​Gateworks created an example GStreamer application named gst-variable-rtsp-server. This application includes a mechanism for auto-adjusting the encoding bitrate depending on the number of clients connected to the server.

gst-variable-rtsp-server can change either the quant-param or the bitrate parameters of the imxvpuenc_h264 encoder. The quant-param will only be used if the pipeline is set to Variable Bitrate mode (VBR). This can be accomplished by passing in the -b 0 flag to the program. Otherwise, gst-variable-rtsp-server will change the bitrate of the stream.

The algorithm used to change both bitrate and quant-param are based on the --steps input (defaulted to 5). For example, if using the default steps value of 5, if the min bitrate was 500 and max bitrate was 2000, it would take 5 clients to adjust from the highest to the lowest quality.

In the below example, the rtsp server was configured to degrade from 10mbps to 400kbps bitrate within 5 steps. Please see below for our results.

gst-variable-rtsp-server --steps=5 --max-bitrate=10000 --min-bitrate=400 --src-element=imxv4l2videosrc --video-in=/dev/video0

quality_changes

For higher resolution images of the above, please view here (10Mbps), here (2.8Mbps), and here (400Kbps).

For more information and sample GStreamer pipelines, please visit our Software Wiki Pages:

GStreamer Compositing for Streaming H.264 Video

Gateworks recently featured a blog in which 8 video cameras were connected to a Gateworks Ventana SBC and then displayed on a HDMI monitor. This is useful for localized applications. For remote applications there is another solution.

Remote applications require streaming the multiple video streams over the network (Ethernet or WiFi). For bandwidth efficiency, all camera inputs can be joined together into a single frame and then transmitted across the network.

streamingdiagram3

To join all the streams into a single frame, a software element of GStreamer called a compositor is used. Older versions of the compositor relied on the CPU and caused choppy video. Gateworks recently started using gstreamer-imx which contains a hardware accelerated compositor which is far superior. With this compositor, each stream can be positioned on the frame and then linked to a RTSP stream in the H.264 format.

An example is shown with two Gateworks Ventana SBCs that are on the same network.

Start the following pipeline on the SBC with the cameras connected:

gst-variable-rtsp-server -u \
 "imxv4l2videosrc device=/dev/video2 queue-size=55 ! queue2 ! c.sink_0 \
 imxv4l2videosrc device=/dev/video3 queue-size=55 ! queue2 ! c.sink_1 \
 imxv4l2videosrc device=/dev/video4 queue-size=55 ! queue2 ! c.sink_2 \
 imxv4l2videosrc device=/dev/video5 queue-size=55 ! queue2 ! c.sink_3 \
 imxv4l2videosrc device=/dev/video6 queue-size=55 ! queue2 ! c.sink_4 \
 imxv4l2videosrc device=/dev/video7 queue-size=55 ! queue2 ! c.sink_5 \
 imxv4l2videosrc device=/dev/video8 queue-size=55 ! queue2 ! c.sink_6 \
 imxv4l2videosrc device=/dev/video9 queue-size=55 ! queue2 ! c.sink_7 \
 imxg2dcompositor name=c background-color=0xffffff \
 sink_0::xpos=0 sink_0::ypos=0 sink_0::width=320 sink_0::height=360 sink_0::fill_color=0x00000000 \
 sink_1::xpos=320 sink_1::ypos=0 sink_1::width=320 sink_1::height=360 sink_1::fill_color=0x00000000 \
 sink_2::xpos=640 sink_2::ypos=0 sink_2::width=320 sink_2::height=360 sink_2::fill_color=0x00000000 \
 sink_3::xpos=960 sink_3::ypos=0 sink_3::width=320 sink_3::height=360 sink_3::fill_color=0x00000000 \
 sink_4::xpos=0 sink_4::ypos=360 sink_4::width=320 sink_4::height=360 sink_4::fill_color=0x00000000 \
 sink_5::xpos=320 sink_5::ypos=360 sink_5::width=320 sink_5::height=360 sink_5::fill_color=0x00000000 \
 sink_6::xpos=640 sink_6::ypos=360 sink_6::width=320 sink_6::height=360 sink_6::fill_color=0x00000000 \
 sink_7::xpos=960 sink_7::ypos=360 sink_7::width=320 sink_7::height=360 sink_7::fill_color=0x00000000 \
 ! queue2 ! video/x-raw, width=1280, height=720 ! imxipuvideotransform \
 ! imxvpuenc_h264 bitrate=20000 ! rtph264pay name=pay0 pt=96"

Then, on the receiving board that is connected to an HDMI display, start the following pipeline with the actual IP address (example IP below) of the board with the cameras:

gst-launch-1.0 rtspsrc location=rtsp://172.24.10.210:9099/stream latency=100 ! \
queue2 ! decodebin ! autovideosink

For more information and code examples, please visit the related Gateworks Software Wiki links below: