Using the Ion "Video Forever" USB video capture box on Linux

The Ion “Video Forever” is a fairly unremarkable USB2 video capture box. Hardware wise, it's very similar to the Terratec Grabby (linuxtv wiki link) but uses a different AC97 codec. I picked it up for some years ago from a Maplins bargain-bin for £30.

It identifies itself to the USB host as:

  • USB ID EB1A:5124 (Vendor ID 0xEB1A, Product ID 0x5124)
  • Product string “USB VIDBOX FW”
  • Serial number “USB2.0 VIDBOX FW”

It has composite and S-Video video inputs, and stereo audio inputs.

You need to set the video width to 720 and height to 576. These are in “advanced options”.

Remember to set the audio device correctly.

Here's a script to record the video from the Video Forever into an MP4 file:

#!/bin/bash -xe
# 
# -y: overwrite without asking
# v4l2 line: Ion Video Forever dongle, usb, video2 dev
# alsa line: Ion Video Forever audio path
# vf scale: video is 16x9 force scaled to 4x3, correct this
# map channel: in audio is mono on left channel -- convert to same on both channels
#    (use map 1.0.1 1.0.1 for right channel)
# preset veryfast: faster MPEG4 encoding
# b:v: video bitrate
#
 
# video bitrate
VBITRATE=8M
 
# This is necessary to produce MP4 video which can be decoded with hardware decoders
VSET="-profile:v high -pix_fmt yuv420p -level:v 4.1 -vcodec libx264"
 
# AAC audio
ASET="-acodec aac"
 
# Video encode preset
PRESET="-preset veryfast"
 
 
# -- Scaling method --
# Resize the video before baking it into MP4
SCALE="scale=1024x576"
 
# Set the display aspect ratio to 16:9 in the output video
# Doesn't work on OBS -- but reduces processing during capture
#SCALE="setdar=dar=16/9"
 
 
ffmpeg -y \
	-f v4l2 -video_size 720x576 -i /dev/video2 \
	-f alsa -i hw:1,0 \
	-vf "$SCALE" \
	$VSET \
	$ASET \
	-map_channel 1.0.0 -map_channel 1.0.0 \
	$PRESET -b:v $VBITRATE $1

The EM28xx driver doesn't detect the Video Forever by default. To work around this –

Edit /etc/modules to add this line:

em28xx

Create /etc/modprobe.d/local-em28xx-ionvideo.conf

options em28xx card=67
install em28xx /sbin/modprobe --ignore-install em28xx $CMDLINE_OPTS && { echo eb1a 5124 > /sys/bus/usb/drivers/em28xx/new_id ; : ; }

These two changes cause the em28xx driver to load on boot, override the detected board ID to 67, and add the new USB ID to the em28xx driver when it loads.

The PCB is labelled “EzCAP116 3.0”

Major parts on the board:

  • eMPIA EM2860 chipset
  • Silan SC8113 (SAA7113 clone) video decoder
  • 24C02 EEPROM
  • Sigmatel/IDT STAC9752AX-PRG AC97 audio processor
  • 12MHz crystal
  • 24.576MHz crystal
Find me on Mastodon
  • Last modified: 2020/11/06 19:24
  • by philpem