Ion Video 2 PC: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(Added a picture of the back of the StarTech svid2usb23)
(Add a source that shows that the Raygo R12-41373 is using the same components)
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Image:101_8021-IonVideo.JPG|thumb|right|Ion Video 2 PC]]
[[Image:101_8021-IonVideo.JPG|thumb|right|Ion Video 2 PC]]


This device is currently not supported under Linux. It is not even detected if the kernel is not patched. Once the kernel is patched, it is possible to get sound, but it is not usable for video.
This device is supported under Linux since version 4.12. It won't be detected by older kernels. In a patched kernel, it is possible to get sound and video may be captured from a progressive video signal (interlaced signals don't work).


It shares the same device id (eb1a:5051) with the '''StarTech svid2usb23''', which suffers from the same problem.
It shares the same device id (eb1a:5051) with the '''StarTech svid2usb23''' and the '''Raygo R12-41373'''. The [https://diit.cz/clanek/co-je-uvnitr-specifikace/diskuseAudio/videoCDDVDRecenze LG GSA-5169D is know to use the same components] as them, but it is unknown if it has the same device id as them.


There are two versions of this device. The "Ion Video 2 PC" and the "Ion Video 2 PC MKII". The first is an older model and in contrast with the newer model, the older does not support Windows 7 or Mac.
There is an older model of Ion Video 2 PC that used a TVMaster TM6010L chip.

The original model of the Ion Video 2 PC used a TVMaster [[Trident_TM6000|TM6010L]] chip. It is said that it's possible to make it work by modifying the tm6000 driver so that it is recognized as a generic TM6010 card.

The newer model is the one that's dealt with in this article. The difference between both can be made by looking at the label under the device to see if it says "MKII".


==Overview/Features==
==Overview/Features==
Line 16: Line 20:


===Other Images===
===Other Images===
<gallery perrow=5>
<gallery perrow=6>
Image:101_8020-IonVideo.JPG|An Ion Video 2 PC upside down
Image:101_8020-IonVideo.JPG|An Ion Video 2 PC upside down
Image:FtoHeOv-IonVideo2pc-inside.jpg|Inside of the Ion Video 2 PC (front)
Image:FtoHeOv-IonVideo2pc-inside.jpg|Inside of the Ion Video 2 PC (front)
Line 46: Line 50:
usb 1-8: Product: USB 2861 Device
usb 1-8: Product: USB 2861 Device
usb 1-8: SerialNumber: 0
usb 1-8: SerialNumber: 0

Output of ''dmesg'' with a kernel patched to detect the device ('''Ion Video 2 PC'''). Sometimes the audio chip is not detected correctly and it will print "Unknown AC97 audio processor detected!".

usb 1-7: new high-speed USB device number 14 using xhci_hcd
usb 1-7: New USB device found, idVendor=eb1a, idProduct=5051
usb 1-7: New USB device strings: Mfr=3, Product=1, SerialNumber=2
usb 1-7: Product: ION Audio USB 2861 Device
usb 1-7: Manufacturer: ION Audio
usb 1-7: SerialNumber: 0
em28xx: New device ION Audio ION Audio USB 2861 Device @ 480 Mbps (eb1a:5051, interface 0, class 0)
em28xx: Video interface 0 found: isoc
em28xx: chip ID is em2860
em2860 #0: EEPROM ID = 1a eb 67 95, EEPROM hash = 0x1f815671
em2860 #0: EEPROM info:
em2860 #0: AC97 audio (5 sample rates)
em2860 #0: 500mA max power
em2860 #0: Table at offset 0x27, strings=0x3482, 0x046a, 0x146e
em2860 #0: Identified as EM2860/TVP5150 Reference Design (card=29)
em2860 #0: analog set to isoc mode.
usbcore: registered new interface driver em28xx
em2860 #0: Registering V4L2 extension
tvp5150 12-005c: tvp5150 (4.0) chip found @ 0xb8 (em2860 #0)
tvp5150 12-005c: tvp5150am1 detected.
em2860 #0: Config register raw data: 0x50
em2860 #0: AC97 vendor ID = 0x83847650
em2860 #0: AC97 features = 0x6a90
em2860 #0: Empia 202 AC97 audio processor detected
em2860 #0: V4L2 video device registered as video0
em2860 #0: V4L2 VBI device registered as vbi0
em2860 #0: V4L2 extension successfully initialized
em28xx: Registered (Em28xx v4l2 Extension) extension


===Identification===
===Identification===
Line 733: Line 768:
.driver_info = EM2860_BOARD_TVP5150_REFERENCE_DESIGN },
.driver_info = EM2860_BOARD_TVP5150_REFERENCE_DESIGN },


Once patched, the device will be detected and video software will be able to use it. If something is plugged into the device, audio can be heard, but it will stop sending video frames to the computer once it has synchronized the analog signal. The problem could be with the ''TVP5150AM1''. This makes the device useless for video recording.
Once patched, the device will be detected and video software will be able to use it. Video can be captured from progressive signals (DVD players, Play Station 2 and other recent devices), but interlaced signals (such as the Nintendo 64's) will cause the video stream to freeze due to a bug in the driver.

'''Support for this device what patched into version 4.12-rc1 of the kernel.'''

A way to still see the video when capturing from interlaced sources is to modify the driver by doing a hack that will only display the first field of the video signal which as the side effect of leaving a huge green bar at the bottom of the screen. To do this, open the file '''em28xx-video.c''' and seek for '''em28xx_v4l2_init'''. Edit the line that checks if the device is webcam, remove the '''if''' condition so that the driver will always be in progressive mode:

//if (dev->board.is_webcam)
v4l2->progressive = true;

(WARNING: This is a hack and may break other devices that use the same driver)

The sound doesn't work with most program. It works with [[qv4l2]], but the sound will not play correctly. If executed from the terminal, this program will repetitively print the following error messages in the terminal while capturing:

ALSA lib pcm.c:7843:(snd_pcm_recover) overrun occurred
ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred

The sound will cut every seconds, before it recovers and cut again continuously, while printing these error messages again and again. Changing the audio buffer size can attenuate this bug without eliminating it.


==External Links==
==External Links==
Line 741: Line 792:
* [http://www.datasheetspdf.com/PDF/EMP202/679795/1 EMP202 Documentation]
* [http://www.datasheetspdf.com/PDF/EMP202/679795/1 EMP202 Documentation]
* [http://www.heyrick.co.uk/blog/files/datasheets/5150am1.pdf TVP5150AM1 Data Manual]
* [http://www.heyrick.co.uk/blog/files/datasheets/5150am1.pdf TVP5150AM1 Data Manual]
* [http://noterepeat.com/products/ion/vcrs-and-video-conversion/46-ion-audio-video-2-pc-and-vcr-2-pc-frequently-asked-questions Ion Video 2 PC FAQ]
* [https://www.mail-archive.com/linux-media@vger.kernel.org/msg41443.html Mailing list post about the Raygo USB Video Recorder]
* [https://lkml.org/lkml/2017/5/5/231 Linux Kernel Mailing List message where the device's USB ID was added]
* [http://linux-media.vger.kernel.narkive.com/IKwSWDBK/em28xx-new-board-id-eb1a-5051 Discussion about the Raygo R12-41373]
[[Category:Analog USB Devices]]
[[Category:Analog USB Devices]]

Latest revision as of 21:12, 27 April 2018

Ion Video 2 PC

This device is supported under Linux since version 4.12. It won't be detected by older kernels. In a patched kernel, it is possible to get sound and video may be captured from a progressive video signal (interlaced signals don't work).

It shares the same device id (eb1a:5051) with the StarTech svid2usb23 and the Raygo R12-41373. The LG GSA-5169D is know to use the same components as them, but it is unknown if it has the same device id as them.

There are two versions of this device. The "Ion Video 2 PC" and the "Ion Video 2 PC MKII". The first is an older model and in contrast with the newer model, the older does not support Windows 7 or Mac.

The original model of the Ion Video 2 PC used a TVMaster TM6010L chip. It is said that it's possible to make it work by modifying the tm6000 driver so that it is recognized as a generic TM6010 card.

The newer model is the one that's dealt with in this article. The difference between both can be made by looking at the label under the device to see if it says "MKII".

Overview/Features

  • It has composite video and audio. It also has a S-Video input.

Components Used

  • Empia EM2860 (EM2861 in the instruction booklet) (USB video bridge)
  • Empia EMP202 (Audio chip recognized as AC'97)
  • Texas Instruments TVP5150AM1 (Video decoder)

Other Images

Kernel Output

Output of dmesg when the kernel is unpatched.

Ion Video 2 PC

usb 1-8: new high-speed USB device number 14 using xhci_hcd
usb 1-8: New USB device found, idVendor=eb1a, idProduct=5051
usb 1-8: New USB device strings: Mfr=3, Product=1, SerialNumber=2
usb 1-8: Product: ION Audio USB 2861 Device
usb 1-8: Manufacturer: ION Audio
usb 1-8: SerialNumber: 0

StarTech svid2usb23

usb 1-8: USB disconnect, device number 9
usb 1-8: new high-speed USB device number 10 using xhci_hcd
usb 1-8: New USB device found, idVendor=eb1a, idProduct=5051
usb 1-8: New USB device strings: Mfr=0, Product=1, SerialNumber=2
usb 1-8: Product: USB 2861 Device
usb 1-8: SerialNumber: 0

Output of dmesg with a kernel patched to detect the device (Ion Video 2 PC). Sometimes the audio chip is not detected correctly and it will print "Unknown AC97 audio processor detected!".

usb 1-7: new high-speed USB device number 14 using xhci_hcd
usb 1-7: New USB device found, idVendor=eb1a, idProduct=5051
usb 1-7: New USB device strings: Mfr=3, Product=1, SerialNumber=2
usb 1-7: Product: ION Audio USB 2861 Device
usb 1-7: Manufacturer: ION Audio
usb 1-7: SerialNumber: 0
em28xx: New device ION Audio ION Audio USB 2861 Device @ 480 Mbps (eb1a:5051, interface 0, class 0)
em28xx: Video interface 0 found: isoc
em28xx: chip ID is em2860
em2860 #0: EEPROM ID = 1a eb 67 95, EEPROM hash = 0x1f815671
em2860 #0: EEPROM info:
em2860 #0: 	AC97 audio (5 sample rates)
em2860 #0: 	500mA max power
em2860 #0: 	Table at offset 0x27, strings=0x3482, 0x046a, 0x146e
em2860 #0: Identified as EM2860/TVP5150 Reference Design (card=29)
em2860 #0: analog set to isoc mode.
usbcore: registered new interface driver em28xx
em2860 #0: Registering V4L2 extension
tvp5150 12-005c: tvp5150 (4.0) chip found @ 0xb8 (em2860 #0)
tvp5150 12-005c: tvp5150am1 detected.
em2860 #0: Config register raw data: 0x50
em2860 #0: AC97 vendor ID = 0x83847650
em2860 #0: AC97 features = 0x6a90
em2860 #0: Empia 202 AC97 audio processor detected
em2860 #0: V4L2 video device registered as video0
em2860 #0: V4L2 VBI device registered as vbi0
em2860 #0: V4L2 extension successfully initialized
em28xx: Registered (Em28xx v4l2 Extension) extension

Identification

Output of lsusb -d eb1a:5051. For the StarTech svid2sub23, the variable iManufacturer has the value 0.

Bus 001 Device 008: ID eb1a:5051 eMPIA Technology, Inc. 
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0 
 bDeviceProtocol         0 
 bMaxPacketSize0        64
 idVendor           0xeb1a eMPIA Technology, Inc.
 idProduct          0x5051 
 bcdDevice            1.00
 iManufacturer           3 
 iProduct                1 
 iSerial                 2 
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength          555
   bNumInterfaces          3
   bConfigurationValue     1
   iConfiguration          0 
   bmAttributes         0x80
     (Bus Powered)
   MaxPower              500mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       1
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       2
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0ad4  2x 724 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       3
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0c00  2x 1024 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       4
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x1300  3x 768 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       5
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x135c  3x 860 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       6
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x13c4  3x 964 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       7
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0001  1x 1 bytes
       bInterval              11
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x1400  3x 1024 bytes
       bInterval               1
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        1
     bAlternateSetting       0
     bNumEndpoints           0
     bInterfaceClass         1 Audio
     bInterfaceSubClass      1 Control Device
     bInterfaceProtocol      0 
     iInterface              0 
     AudioControl Interface Descriptor:
       bLength                 9
       bDescriptorType        36
       bDescriptorSubtype      1 (HEADER)
       bcdADC               1.00
       wTotalLength           39
       bInCollection           1
       baInterfaceNr( 0)       2
     AudioControl Interface Descriptor:
       bLength                12
       bDescriptorType        36
       bDescriptorSubtype      2 (INPUT_TERMINAL)
       bTerminalID             1
       wTerminalType      0x0603 Line Connector
       bAssocTerminal          0
       bNrChannels             2
       wChannelConfig     0x0003
         Left Front (L)
         Right Front (R)
       iChannelNames           0 
       iTerminal               0 
     AudioControl Interface Descriptor:
       bLength                 9
       bDescriptorType        36
       bDescriptorSubtype      6 (FEATURE_UNIT)
       bUnitID                 2
       bSourceID               1
       bControlSize            1
       bmaControls( 0)      0x03
         Mute Control
         Volume Control
       bmaControls( 1)      0x00
       iFeature                0 
     AudioControl Interface Descriptor:
       bLength                 9
       bDescriptorType        36
       bDescriptorSubtype      3 (OUTPUT_TERMINAL)
       bTerminalID             3
       wTerminalType      0x0101 USB Streaming
       bAssocTerminal          0
       bSourceID               2
       iTerminal               0 
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0 
     iInterface              0 
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           3
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           2
       bBitResolution         16
       bSamFreqType            1 Discrete
       tSamFreq[ 0]            0
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0000  1x 0 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x00
         bLockDelayUnits         0 Undefined
         wLockDelay              0 Undefined
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       1
     bNumEndpoints           1
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0 
     iInterface              0 
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           3
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           2
       bBitResolution         16
       bSamFreqType            1 Discrete
       tSamFreq[ 0]        48000
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x00c4  1x 196 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x00
         bLockDelayUnits         0 Undefined
         wLockDelay              0 Undefined
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       2
     bNumEndpoints           1
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0 
     iInterface              0 
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           3
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           2
       bBitResolution         16
       bSamFreqType            1 Discrete
       tSamFreq[ 0]        44100
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x00b4  1x 180 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x00
         bLockDelayUnits         0 Undefined
         wLockDelay              0 Undefined
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       3
     bNumEndpoints           1
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0 
     iInterface              0 
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           3
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           2
       bBitResolution         16
       bSamFreqType            1 Discrete
       tSamFreq[ 0]        32000
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0084  1x 132 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x00
         bLockDelayUnits         0 Undefined
         wLockDelay              0 Undefined
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       4
     bNumEndpoints           1
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0 
     iInterface              0 
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           3
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           2
       bBitResolution         16
       bSamFreqType            1 Discrete
       tSamFreq[ 0]        16000
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0044  1x 68 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x00
         bLockDelayUnits         0 Undefined
         wLockDelay              0 Undefined
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       5
     bNumEndpoints           1
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0 
     iInterface              0 
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           3
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           2
       bBitResolution         16
       bSamFreqType            1 Discrete
       tSamFreq[ 0]         8000
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0024  1x 36 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x00
         bLockDelayUnits         0 Undefined
         wLockDelay              0 Undefined

Making it work

The kernel must be patched. The device id must be added to em28xx-cards.c.

{ USB_DEVICE(0xeb1a, 0x5051),
.driver_info = EM2860_BOARD_TVP5150_REFERENCE_DESIGN },

Once patched, the device will be detected and video software will be able to use it. Video can be captured from progressive signals (DVD players, Play Station 2 and other recent devices), but interlaced signals (such as the Nintendo 64's) will cause the video stream to freeze due to a bug in the driver.

Support for this device what patched into version 4.12-rc1 of the kernel.

A way to still see the video when capturing from interlaced sources is to modify the driver by doing a hack that will only display the first field of the video signal which as the side effect of leaving a huge green bar at the bottom of the screen. To do this, open the file em28xx-video.c and seek for em28xx_v4l2_init. Edit the line that checks if the device is webcam, remove the if condition so that the driver will always be in progressive mode:

//if (dev->board.is_webcam)
    v4l2->progressive = true;

(WARNING: This is a hack and may break other devices that use the same driver)

The sound doesn't work with most program. It works with qv4l2, but the sound will not play correctly. If executed from the terminal, this program will repetitively print the following error messages in the terminal while capturing:

ALSA lib pcm.c:7843:(snd_pcm_recover) overrun occurred
ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred

The sound will cut every seconds, before it recovers and cut again continuously, while printing these error messages again and again. Changing the audio buffer size can attenuate this bug without eliminating it.

External Links