Honestech Vidbox NW03

From LinuxTVWiki
Jump to navigation Jump to search

A USB video and audio capture device with no tuner. It only has Composite and S-Video inputs.

Currently unsupported by Linux vanilla kernel but does work with drivers from git V4L tree. Once the drivers are installed it works well with Composite input, but S-Video hasn't been tested.

Overview/Features

  • Three phono (RCA jack) inputs for Composite, which use the standard Red/White/Yellow colour scheme.
  • Four pin mini-DIN socket for S-Video input.
  • Based on the Empia EM2860 chip, therefore uses V4L's em28xx driver.
  • USB Id eb1a:5006

Components Used

Verified by opening the box:

  • Empia EM2860 USB Video Capture Device.
  • Empia EMP202 Dual-Channel AC'97 Codec.
  • Philips SAA7113H Video Input Processor.
  • BL24C02 Serial EEPROM.

Current Status

  • Works with V4L drivers from git tree (the patches below have been merged).
  • Works with the Composite video and audio inputs.
  • S-Video input untested.

To Make It Work

There are three issues with V4L and this device:

  1. The EMP202 is identified as a SIGMATEL chip by the driver.
  2. The USB Id is not recognised by the driver.
  3. Once recognised, the inputs are not configured correctly.

Patching V4L

Patching is not needed any more - this is for info only.

The following two patches were against a older clone of git://linuxtv.org/media_build.git

This first patch addressed the 1st issue - incorrectly identified audio chip:

diff --git a/linux/drivers/media/video/em28xx/em28xx-core.c b/linux/drivers/media/video/em28xx/em28xx-core.c
index 804a4ab..2982a06 100644
--- a/linux/drivers/media/video/em28xx/em28xx-core.c
+++ b/linux/drivers/media/video/em28xx/em28xx-core.c
@@ -568,7 +568,7 @@ int em28xx_audio_setup(struct em28xx *dev)
 	em28xx_warn("AC97 features = 0x%04x\n", feat);
 
 	/* Try to identify what audio processor we have */
-	if ((vid == 0xffffffff) && (feat == 0x6a90))
+	if (((vid == 0xffffffff) || (vid == 0x83847650)) && (feat == 0x6a90))
 		dev->audio_mode.ac97 = EM28XX_AC97_EM202;
 	else if ((vid >> 8) == 0x838476)
 		dev->audio_mode.ac97 = EM28XX_AC97_SIGMATEL;

The second patch added the USB Id to the driver and configures it to work with Composite and audio inputs:

diff --git a/linux/drivers/media/video/em28xx/em28xx-cards.c b/linux/drivers/media/video/em28xx/em28xx-cards.c
index 1704da0..4f55962 100644
--- a/linux/drivers/media/video/em28xx/em28xx-cards.c
+++ b/linux/drivers/media/video/em28xx/em28xx-cards.c
@@ -1888,6 +1888,22 @@ struct em28xx_board em28xx_boards[] = {
 		.has_dvb       = 1,
 		.ir_codes      = RC_MAP_PINNACLE_PCTV_HD,
 	},
+	/* eb1a:5006 Honestech VIDBOX NW03
+	 * Empia EM2860, Philips SAA7113, Empia EMP202, No Tuner */
+	[EM2860_BOARD_HT_VIDBOX_NW03] = {
+		.name                = "Honestech Vidbox NW03",
+		.tuner_type          = TUNER_ABSENT,
+		.decoder             = EM28XX_SAA711X,
+		.input               = { {
+			.type     = EM28XX_VMUX_COMPOSITE1,
+			.vmux     = SAA7115_COMPOSITE0,
+			.amux     = EM28XX_AMUX_LINE_IN,
+		}, {
+			.type     = EM28XX_VMUX_SVIDEO,
+			.vmux     = SAA7115_SVIDEO3,  /* S-VIDEO needs confirming */
+			.amux     = EM28XX_AMUX_LINE_IN,
+		} },
+	},
 };
 const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
 
@@ -2027,6 +2043,8 @@ struct usb_device_id em28xx_id_table[] = {
 			.driver_info = EM28174_BOARD_PCTV_460E },
 	{ USB_DEVICE(0x2040, 0x1605),
 			.driver_info = EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C },
+	{ USB_DEVICE(0xeb1a, 0x5006),
+			.driver_info = EM2860_BOARD_HT_VIDBOX_NW03 },
 	{ },
 };
 MODULE_DEVICE_TABLE(usb, em28xx_id_table);
diff --git a/linux/drivers/media/video/em28xx/em28xx.h b/linux/drivers/media/video/em28xx/em28xx.h
index b1199ef..2dbb12c 100644
--- a/linux/drivers/media/video/em28xx/em28xx.h
+++ b/linux/drivers/media/video/em28xx/em28xx.h
@@ -124,6 +124,7 @@
 #define EM28174_BOARD_PCTV_460E                   80
 #define EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C	  81
 #define EM2884_BOARD_CINERGY_HTC_STICK		  82
+#define EM2860_BOARD_HT_VIDBOX_NW03 		  83
 
 /* Limits minimum and default number of buffers */
 #define EM28XX_MIN_BUF 4

Again: Neither of the patches above will be needed if using the latest git clone of V4L.

Testing

If all goes well, then kernel logs should show something similar to the following:

[16272.860265] usb 2-1.3: new high speed USB device number 8 using ehci_hcd
[16272.959939] em28xx: New device USB VIDBOX Audio @ 480 Mbps (eb1a:5006, interface 0, class 0)
[16272.960144] em28xx #0: chip ID is em2860
[16273.090566] em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 06 50 50 00 20 03 6a 24 8e 28
[16273.090582] em28xx #0: i2c eeprom 10: 00 00 24 57 06 02 00 00 00 00 00 00 00 00 00 00
[16273.090597] em28xx #0: i2c eeprom 20: 02 00 01 00 f0 10 01 00 00 00 00 00 5b 00 00 00
[16273.090611] em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
[16273.090625] em28xx #0: i2c eeprom 40: 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090639] em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090653] em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 24 03 55 00 53 00
[16273.090667] em28xx #0: i2c eeprom 70: 42 00 20 00 56 00 49 00 44 00 42 00 4f 00 58 00
[16273.090681] em28xx #0: i2c eeprom 80: 20 00 41 00 75 00 64 00 69 00 6f 00 00 00 28 03
[16273.090695] em28xx #0: i2c eeprom 90: 55 00 53 00 42 00 32 00 2e 00 30 00 20 00 56 00
[16273.090709] em28xx #0: i2c eeprom a0: 49 00 44 00 42 00 4f 00 58 00 20 00 4e 00 57 00
[16273.090723] em28xx #0: i2c eeprom b0: 30 00 33 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090737] em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090750] em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090764] em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090778] em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[16273.090794] em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0x5129e4d9
[16273.090797] em28xx #0: EEPROM info:
[16273.090799] em28xx #0:	AC97 audio (5 sample rates)
[16273.090802] em28xx #0:	500mA max power
[16273.090805] em28xx #0:	Table at 0x24, strings=0x246a, 0x288e, 0x0000
[16273.092559] em28xx #0: Identified as Honestech Vidbox NW03 (card=83)
[16273.451720] saa7115 15-0025: saa7113 found (1f7113d0e100000) @ 0x4a (em28xx #0)
[16274.218157] em28xx #0: Config register raw data: 0x50
[16274.241863] em28xx #0: AC97 vendor ID = 0x83847650
[16274.253844] em28xx #0: AC97 features = 0x6a90
[16274.253848] em28xx #0: Empia 202 AC97 audio processor detected
[16274.713049] em28xx #0: v4l2 driver version 0.1.3
[16275.735250] em28xx #0: V4L2 video device registered as video0
[16275.735256] em28xx #0: V4L2 VBI device registered as vbi0

Using

Run:

mplayer tv:// -tv driver=v4l2:device=/dev/video0:audiorate=48000:immediatemode=0:forceaudio:alsa:adevice=hw.1:buffersize=64

and you should see a video and hear the audio. You may have to turn up the capture level for the device to hear any sound though. Also, you may need to add 'norm=pal' or 'norm=ntsc' to the driver options (e.g. in the above line, squeeze it in after 'v4l2' so that it reads 'driver=v4l2:norm=ntsc:device=/dev/vi...').

See also