Viewing the output of a C64 on a laptop via an STK1160 based video grabber

January 22, 2020 - Reading time: 2 minutes

I bought a cheap (< €15) USB 2.0 video grabber which is based on the SyntekSTK1160 chipset. My goal was to display the output of my Commodore 64 on the screen of my laptop. The cable which connects the C64 with the video grabber allows me to use an s-video signal.

Commodore 64 connected to Linux system via video grabber

I use a current Linux Kernel (5.4), but the chipset is supported in Linux for ages. The device turns up as

/dev/video2

in my filesystem when connected to the laptop.

The device also contains an audio interface:

$ cat /proc/asound/cards 
0 [HDMI ]: HDA-Intel - HDA Intel HDMI
HDA Intel HDMI at 0xf2530000 irq 36
1 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xf2534000 irq 37
2 [STK1160 ]: USB-Audio - STK1160
Syntek STK1160 at usb-0000:00:14.0-6, high speed
29 [ThinkPadEC ]: ThinkPad EC - ThinkPad Console Audio Control
ThinkPad Console Audio Control at EC reg 0x30, fw unknown

On my system it has the number 2.

With this information I can start VLC displaying the video output of the C64 and playing the audio synchronously.

vlc v4l2:///dev/video2:input=4:width=720:height=576:norm=PAL_BG --input-slave=alsa://hw:2,0 --demux rawvideo

Since I want to use s-video I have to use input 4, otherwise the screen will stay black because VLC defaults to input 0 which is composite.

The lag is negligible, I have owned TVs which behaved worse.