2013-10-02

Naked hardware #13: Logitec LDT-1S310U/J

Logitec LDT-1S310U/J teardown!

It is Mirics MSi3101 reference design and nothing more. 

Logitec LDT-1S310U/J

Key components:

Mirics MSi2500
Mirics MSi001


General info

First  of all, check my earlier post about Mirics MSi3101 Linux driver as that device is similar from the hardware point of view. Device is sold as a 1seg ISDB-T TV tuner for Japan market. 1seg aka One Seg is mobile digital television standard used in few countries like Japan and Brazil. Only thing that makes this device as 1seg receiver is bundled software. As a SDR based DTV solution it is possible to use same hardware for receiving other standards just using another software.

Device has no eeprom, which means USB ID is the one defined by chipset itself 1df7:2500 (chipset default ID). That means it is compatible with all software released for Mirics MSi3101.

Initial Linux support for that device has gone to the Kernel 3.12 as a staging quality.

Hardware internals

PCB top side
All relevant components, MSi2500 and MSi001, could be found from that side of PCB. 24.000 MHz crystal is also visible. It offers reference clock for both chips.

PCB is rather tiny, only 37 x 17 mm. MSi2500 is integrated USB interface ADC. MSi001 is silicon RF tuner. I am not going to chip details now as I have done it earlier, just look my older blog posts about MSi3101 for more detailed information.

Antenna connector looks like typical MCX but it is not. Type of that connector is unknown for me but, fortunately package contains antenna pigtail cable having standard F female on the other end. There is also two small antennas bundled. Other antenna is quite unusual small telescope without a cable and another is typical mini-magnet type, coming along with almost every of these DTV sticks.

PCB has some printings:
LWE 88 94V-0
10510

PCB bottom side is almost empty

PCB bottom side 

Nothing to say.

PCB printings:
ISDBT2036 Ver 1.0


Connected antennas

MSi001 antenna inputs

VHF (pins 9, 10), BAND3 (pins 3, 4) and BAND45 (pins 6, 7) antennas are connected. AM (pins 37, 38 & 39, 40) and LBAND (pins 24, 25) inputs are not connected. That limits actual frequency range to 50 - 960MHz.

It is possible to connect those unconnected inputs but it is not very trivial as chip is very small. Likely microscope soldering station is needed.


USB interface

IDLE current drain without a driver: 32mA



Pictures






























2013-09-24

Silicon Labs released DVB-C2/C/T2/T/S2/S chipset

Si216x DVB-C2/C/T2/T/S2/S

Silicon Labs has released new DVB chipset that supports basically all 2nd generation DVB standards, including DVB-T2-Lite and DVB-C2! Flagship model Si2164 supports that all in single chip.

It will be interesting to see when first PCTV products using that chipset will arrive to market. Also it could be interesting to implement DVB-C2 Linux driver :)

For more info, see press release:

Silicon Labs Introduces the World’s Most Advanced DVB Demodulators for TVs and Set-Top Boxes
New Si216x/6x2 Family Supports Latest Digital Video Broadcast Standards, Features the Industry’s First Dual-Channel DVB Demodulators

2013-09-22

IT9500/IT9503/IT9507 DVB-T modulator chipset

First USB DVB-T modulator chipset

There is interesting new device arrived to marked recently, relatively cheap USB DVB-T modulator (modulator = television transmitter). Device is build upon ITE IT9507 chipset, which is world first DVB modulator chipset aimed for mass production devices for home user segment. There has been FPGA based PCI/USB modulators long time, most notably from company called Dektec. These devices are mostly targeted to research and development having price ticket something too much for home users. IT9507 USB dongle manufactured by HiDes costs under  $200 USD currently and price will likely go down in the future.

Chipset family is named as IT9500 and it contains two different chip versions, IT9503 and IT9507. IT9503 offers very limited set of DVB-T transmission parameters (constellation QPSK, code rate 1/2, guard interval 1/4) whilst IT9507 is full featured.

Linux DVB API and driver

Linux DVB API does not have support for DTV modulators yet. Adding new commands to API is not very big task as there is almost everything already, due to large amount of supported digital television receivers and standards. Biggest challenge I see is to study how to feed transport stream (TS, video and audio data) to Kernel and then from Kernel to device. I think proper solution is to generate correct TS, that match desired transmission parameters, on userspace and then feed that data via Kernel driver to the device.

Dave Chapman has got GPL'd Linux driver from device vendor and is now porting that to the mainline. His work is available on GitHub:
https://github.com/linuxstb/it9507

Related links:

http://www.avalpa.com/the-key-values-product/9-avalpa-answers/79-opencaster-bundle-with-usb-modulator-card
http://www.sunnic.com/english/01_product/02_brand_detail.php?AID=69
http://www.edaboard.com/thread251637.html
http://www.hides.com.tw/product_cg74469-cn.html

2013-09-07

[GIT PULL for v3.12-rc1] media updates

Subject: [GIT PULL for v3.12-rc1] media updates
Date: Thu, 05 Sep 2013 11:24:41 -0300
From: Mauro Carvalho Chehab <>

Hi Linus,

Please pull from:
  git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media v4l_for_linus

This series contain:
    - Exynos s5p-mfc driver got support for VP8 encoder;
    - Some SoC drivers gained support for asynchronous registration
      (needed for DT);
    - The RC subsystem gained support for RC activity LED;
    - New drivers added: a video decoder(adv7842), a video encoder (adv7511),
      a new GSPCA driver (stk1135) and support for Renesas R-Car (vsp1).
    - the first SDR kernel driver: mirics msi3101. Due to some troubles with
      the driver, and because the API is still under discussion, it will be
      merged at staging for 3.12. Need to rework on it;
    - usual new boards additions, fixes, cleanups and driver improvements.

Thanks!
Mauro

PS.: Some trivial conflicts are expected when merging with ARM tree
(mach-shmobile), due to a few patches on this series with DT data for
Reneseas R-Car.

Also, a trivial conflict at s5p_mfc_dec.c and s5p_mfc_enc.c will happen as
a macro name got renamed from IS_MFCV6 to IS_MFCV6_PLUS.

Both are easy to solve. Also, all of them are solved at the linux-next tree.

-

The following changes since commit 3b2f64d00c46e1e4e9bd0bb9bb12619adac27a4b:

  Linux 3.11-rc2 (2013-07-21 12:05:29 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media v4l_for_linus

for you to fetch changes up to f66b2a1c7f2ae3fb0d5b67d07ab4f5055fd3cf16:

  [media] cx88: Fix regression: CX88_AUDIO_WM8775 can't be 0 (2013-09-03 09:24:22 -0300)

----------------------------------------------------------------
Alban Browaeys (2):
      [media] em28xx: Fix vidioc fmt vid cap v4l2 compliance
      [media] em28xx: fix assignment of the eeprom data

Alexander Shiyan (1):
      [media] media: coda: Fix DT driver data pointer for i.MX27

Alexey Khoroshilov (4):
      [media] tlg2300: implement error handling in poseidon_probe()
      [media] tlg2300: fix checking firmware in poseidon_probe()
      [media] gspca: fix dev_open() error path
      [media] hdpvr: fix iteration over uninitialized lists in hdpvr_probe()

Andrzej Hajda (4):
      [media] V4L: s5c73m3: Add format propagation for TRY formats
      [media] exynos4-is: Ensure the FIMC gate clock is disabled at driver remove()
      [media] DocBook: upgrade media_api DocBook version to 4.2
      [media] v4l2: added missing mutex.h include to v4l2-ctrls.h

Andy Shevchenko (1):
      [media] smiapp: re-use clamp_t instead of min(..., max(...))

Antonio Ospite (1):
      [media] gspca-ov534: don't call sd_start() from sd_init()

Antti Palosaari (26):
      [media] dvb-usb-v2: fix Kconfig dependency when RC_CORE=m
      [media] e4000: implement DC offset correction
      [media] e4000: use swap() macro
      [media] e4000: make checkpatch.pl happy
      [media] e4000: change remaining pr_warn to dev_warn
      [media] lme2510: do not use bInterfaceNumber from dvb_usb_v2
      [media] dvb_usb_v2: get rid of deferred probe
      [media] Mirics MSi3101 SDR Dongle driver
      [media] msi3101: sample is correct term for sample
      [media] msi3101: fix sampling rate calculation
      [media] msi3101: add sampling mode control
      [media] msi3101: enhance sampling results
      [media] msi3101: fix stream re-start halt
      [media] msi3101: add 2040:d300 Hauppauge WinTV 133559 LF
      [media] msi3101: add debug dump for unknown stream data
      [media] msi3101: correct ADC sampling rate calc a little bit
      [media] msi3101: improve tuner synth calc step size
      [media] msi3101: add support for stream format "252" I+Q per frame
      [media] msi3101: init bits 23:20 on PLL register
      [media] msi3101: fix overflow in freq setting
      [media] msi3101: add stream format 336 I+Q pairs per frame
      [media] msi3101: changes for tuner PLL freq limits
      [media] msi3101: a lot of small cleanups
      [media] msi3101: implement stream format 504
      [media] msi3101: change stream format 384
      [media] msi3101: few improvements for RF tuner

Arun Kumar K (9):
      [media] s5p-mfc: Update v6 encoder buffer sizes
      [media] s5p-mfc: Rename IS_MFCV6 macro
      [media] s5p-mfc: Add register definition file for MFC v7
      [media] s5p-mfc: Core support for MFC v7
      [media] s5p-mfc: Update driver for v7 firmware
      [media] V4L: Add VP8 encoder controls
      [media] s5p-mfc: Add support for VP8 encoder
      [media] exynos4-is: Fix fimc-lite bayer formats
      [media] exynos-gsc: Register v4l2 device

Bjørn Mork (1):
      [media] siano: fix divide error on 0 counters

Dan Carpenter (5):
      [media] staging: lirc: clean error handling in probe()
      [media] exynos4-is: Print error message on timeout
      [media] s3c-camif: forever loop in camif_hw_set_source_format()
      [media] s5k6aa: off by one in s5k6aa_enum_frame_interval()
      [media] ov9650: off by one in ov965x_enum_frame_sizes()

Dean Anderson (1):
      [media] S2255: Removal of unnecessary videobuf_queue_is_busy

Ezequiel Garcia (2):
      [media] stk1160: Allow to change input while streaming
      [media] media: stk1160: Ignore unchanged standard set

Fabio Estevam (3):
      [media] coda: Fix error paths
      [media] coda: Check the return value from clk_prepare_enable()
      [media] coda: No need to check the return value of platform_get_resource()

Geert Uytterhoeven (1):
      [media] media/v4l2: VIDEO_SH_VEU should depend on HAS_DMA

Guennadi Liakhovetski (6):
      [media] V4L2: soc-camera: fix requesting regulators in synchronous case
      [media] V4L2: mx3_camera: convert to managed resource allocation
      [media] V4L2: mx3_camera: print V4L2_MBUS_FMT_* codes in hexadecimal format
      [media] V4L2: mx3_camera: add support for asynchronous subdevice registration
      [media] V4L2: mt9t031: don't Oops if asynchronous probing is attempted
      [media] V4L2: mt9m111: switch to asynchronous subdevice probing

Hans Verkuil (24):
      [media] v4l2-dv-timings.h: remove duplicate V4L2_DV_BT_DMT_1366X768P60
      [media] v4l2-dv-timings: add new helper module
      [media] v4l2: move dv-timings related code to v4l2-dv-timings.c
      [media] DocBook/media/v4l: il_* fields always 0 for progressive formats
      [media] videodev2.h: defines to calculate blanking and frame sizes
      [media] v4l2: use new V4L2_DV_BT_BLANKING/FRAME defines
      [media] v4l2: use new V4L2_DV_BT_BLANKING/FRAME defines
      [media] ths8200/ad9389b: use new dv_timings helpers
      [media] soc_camera: fix compiler warning
      [media] v4l2-dv-timings: add v4l2_print_dv_timings helper
      [media] ad9389b/adv7604/ths8200: use new v4l2_print_dv_timings helper
      [media] v4l2-dv-timings: rename v4l_match_dv_timings to v4l2_match_dv_timings
      [media] adv7604/ad9389b/ths8200: decrease min_pixelclock to 25MHz
      [media] v4l2-dv-timings: fill in type field
      [media] v4l2-dv-timings: export the timings list
      [media] v4l2-dv-timings: rename v4l2_dv_valid_timings to v4l2_valid_dv_timings
      [media] v4l2-dv-timings: add callback to handle exceptions
      [media] adv7604: set is_private only after successfully creating all controls
      [media] ad9389b: set is_private only after successfully creating all controls
      [media] adv7842: add new video decoder driver
      [media] adv7511: add new video encoder
      [media] MAINTAINERS: add entries for adv7511 and adv7842
      [media] ml86v7667: fix compile warning: 'ret' set but not used
      [media] cx88: Fix regression: CX88_AUDIO_WM8775 can't be 0

Hans de Goede (2):
      [media] radio-si470x-usb: Remove software version check
      [media] gspca_ov519: Fix support for the Terratec Terracam USB Pro

Johannes Erdfelt (1):
      [media] cx231xx: Add support for KWorld UB445-U

Johannes Koch (1):
      [media] cx23885: Fix TeVii S471 regression since introduction of ts2020

John Sheu (1):
      [media] s5p-mfc: Fix input/output format reporting

Jon Arne Jørgensen (3):
      [media] saa7115: Fix saa711x_set_v4lstd for gm7113c
      [media] saa7115: Do not load saa7115_init_misc for gm7113c
      [media] saa7115: Implement i2c_board_info.platform_data

Juergen Lock (1):
      [media] media: rc: rdev->open or rdev->close can be NULL

Julia Lawall (1):
      [media] marvell-ccic/mmp-driver.c: simplify use of devm_ioremap_resource

Katsuya Matsubara (2):
      [media] vsp1: Fix lack of the sink entity registration for enabled links
      [media] vsp1: Use the maximum number of entities defined in platform data

Lad, Prabhakar (15):
      [media] media: i2c: ths8200: support asynchronous probing
      [media] media: i2c: ths8200: add OF support
      [media] media: i2c: adv7343: add support for asynchronous probing
      [media] media: i2c: tvp7002: add support for asynchronous probing
      [media] media: i2c: tvp514x: add support for asynchronous probing
      [media] media: davinci: vpif: capture: add V4L2-async support
      [media] media: davinci: vpif: display: add V4L2-async support
      [media] media: davinci: vpbe_venc: convert to devm_* api
      [media] media: davinci: vpbe_osd: convert to devm_* api
      [media] media: davinci: vpbe_display: convert to devm* api
      [media] media: davinci: vpss: convert to devm* api
      [media] media: i2c: adv7343: make the platform data members as array
      [media] media: i2c: adv7343: add OF support
      [media] media: OF: add "sync-on-green-active" property
      [media] media: i2c: tvp7002: add OF support

Laurent Pinchart (20):
      [media] media: Add support for circular graph traversal
      [media] Documentation: media: Clarify the VIDIOC_CREATE_BUFS format requirements
      [media] media: vb2: Clarify queue_setup() and buf_prepare() usage documentation
      [media] media: vb2: Take queue or device lock in mmap-related vb2 ioctl handlers
      [media] v4l: Fix V4L2_MBUS_FMT_YUV10_1X30 media bus pixel code value
      [media] v4l: Add media format codes for ARGB8888 and AYUV8888 on 32-bit busses
      [media] v4l: Add V4L2_PIX_FMT_NV16M and V4L2_PIX_FMT_NV61M formats
      [media] v4l: Renesas R-Car VSP1 driver
      [media] videobuf2-core: Verify planes lengths for output buffers
      [media] v4l: of: Use of_get_child_by_name()
      [media] v4l: of: Drop acquired reference to node when getting next endpoint
      [media] v4l: Fix colorspace conversion error in sample code
      [media] v4l: async: Make it safe to unregister unregistered notifier
      [media] mt9v032: Use the common clock framework
      [media] media: vb2: Fix potential deadlock in vb2_prepare_buffer
      [media] media: vb2: Share code between vb2_prepare_buf and vb2_qbuf
      [media] MAINTAINERS: Add entry for the Aptina PLL library
      [media] v4l: vsp1: Initialize media device bus_info field
      [media] v4l: vsp1: Add support for RT clock
      [media] v4l: vsp1: Fix mutex double lock at streamon time

Libin Yang (7):
      [media] marvell-ccic: add MIPI support for marvell-ccic driver
      [media] marvell-ccic: add clock tree support for marvell-ccic driver
      [media] marvell-ccic: reset ccic phy when stop streaming for stability
      [media] marvell-ccic: refine mcam_set_contig_buffer function
      [media] marvell-ccic: add new formats support for marvell-ccic driver
      [media] marvell-ccic: add SOF / EOF pair check for marvell-ccic driver
      [media] marvell-ccic: switch to resource managed allocation and request

Libo Chen (1):
      [media] drivers/media/radio/radio-maxiradio: Convert to module_pci_driver

Lubomir Rintel (3):
      [media] usbtv: Add S-Video input support
      [media] usbtv: Fix deinterlacing
      [media] usbtv: Throw corrupted frames away

Luis Alves (2):
      [media] cx23885[v4]: Fix interrupt storm when enabling IR receiver
      [media] Fixed misleading error when handling IR interrupts

Martin Bugge (4):
      [media] v4l2-dv-timings: fix CVT calculation
      [media] adv7604: pixel-clock depends on deep-color-mode
      [media] ad9389b: trigger edid re-read by power-cycle chip
      [media] adv7604: corrected edid crc-calculation

Mats Randgaard (5):
      [media] adv7604: debounce "format change" notifications
      [media] adv7604: improve log_status for HDMI/DVI-D signals
      [media] adv7604: print flags and standards in timing information
      [media] ad9389b: no monitor if EDID is wrong
      [media] ad9389b: change initial register configuration in ad9389b_setup()

Mauro Carvalho Chehab (15):
      Merge tag 'v3.11-rc2' into patchwork
      [media] cx23885-video: fix two warnings
      [media] stk1160: Build as a module if SND is m and audio support is selected
      [media] saa7115: make multi-line comments compliant with CodingStyle
      sh_mobile_ceu_camera: Fix a compilation warning
      v4l2-common: warning fix (W=1): add a missed function prototype
      [media] cx23885-dvb: use a better approach to hook set_frontend
      [media] mb86a20s: Fix TS parallel mode
      [media] cx23885: Add DTV support for Mygica X8502/X8507 boards
      [media] Fix build errors on usbtv when driver is builtin
      [media] sms: fix randconfig building error
      [media] cx88: fix build when VP3054=m and CX88_DVB=y
      [media] sound/pci/Kconfig: select RADIO_ADAPTERS if needed
      [media] vsp1: Fix a sparse warning
      [media] msi3101: Fix compilation on i386

Maxim Levitsky (3):
      [media] ene_ir: Fix interrupt line passthrough to hardware
      [media] ene_ir: disable the device if wake is disabled
      [media] ene_ir: don't use pr_debug after all

Michael Krufky (1):
      [media] dib0700: add support for PCTV 2002e & PCTV 2002e SE

Ondrej Zary (7):
      [media] tea575x-tuner: move HW init to a separate function
      [media] bttv: stop abusing mbox_we for sw_status
      [media] radio-aztech: Convert to generic lm7000 implementation
      [media] radio-aztech: Implement signal strength detection and fix stereo detection
      [media] tea575x: Move header from sound to media
      [media] tea575x: Move from sound to media
      [media] introduce gspca-stk1135: Syntek STK1135 driver

Philipp Zabel (9):
      [media] mem2mem: add support for hardware buffered queue
      [media] coda: use vb2_set_plane_payload instead of setting v4l2_planes[0].bytesused directly
      [media] coda: dynamic IRAM setup for encoder
      [media] coda: do not allocate maximum number of framebuffers for encoder
      [media] coda: update CODA7541 to firmware 1.4.50
      [media] coda: add bitstream ringbuffer handling for decoder
      [media] coda: dynamic IRAM setup for decoder
      [media] coda: split encoder specific parts out of device_run and irq_handler
      [media] coda: add CODA7541 decoding support

Prathyush K (1):
      [media] exynos-gsc: fix s2r functionality

Ricardo Ribalda (1):
      [media] v4l2-dev: Fix race condition on __video_register_device

Sachin Kamat (4):
      [media] exynos4-is: Fix potential NULL pointer dereference
      [media] exynos4-is: Staticize local symbol
      [media] exynos4-is: Annotate unused functions
      [media] s5p-g2d: Fix registration failure

Sakari Ailus (3):
      [media] smiapp-pll: Add a few comments to PLL calculation
      [media] smiapp: Prepare and unprepare clocks correctly
      [media] smiapp: Call the clock "ext_clk"

Sean Young (9):
      [media] redrat3: errors on unplug
      [media] rc: allowed_protos now is a bit field
      [media] lirc: validate transmission ir data
      [media] lirc: make transmit interface consistent
      [media] redrat3: ensure whole packet is read
      [media] rc: add feedback led trigger for rc keypresses
      [media] redrat3: wire up rc feedback led
      [media] ttusbir: wire up rc feedback led
      [media] winbond: wire up rc feedback led

Shaik Ameer Basha (1):
      [media] v4l2-mem2mem: clear m2m context from job_queue before ctx streamoff

Srinivas Kandagatla (2):
      [media] media: rc: Add rc_open/close and use count to rc_dev
      [media] media: lirc: Allow lirc dev to talk to rc device

Sylwester Nawrocki (15):
      [media] V4L: Drop bus_type check in v4l2-async match functions
      [media] V4L: Rename v4l2_async_bus_* to v4l2_async_match_*
      [media] V4L: Add V4L2_ASYNC_MATCH_OF subdev matching type
      [media] V4L: Rename subdev field of struct v4l2_async_notifier
      [media] V4L: Merge struct v4l2_async_subdev_list with struct v4l2_subdev
      [media] DocBook: Fix typo in V4L2_CID_JPEG_COMPRESSION_QUALITY reference
      [media] V4L: Add support for integer menu controls with standard menu items
      [media] v4l2-async: Use proper list head for iteration over registered subdevs
      [media] v4l2-ctrl: Suppress build warning from v4l2_ctrl_new_std_menu()
      [media] exynos4-is: Initialize the ISP subdev sd->owner field
      [media] exynos4-is: Add missing MODULE_LICENSE for exynos-fimc-is.ko
      [media] exynos4-is: Add missing v4l2_device_unregister() call in fimc_md_remove()
      [media] exynos4-is: Simplify sclk_cam clocks handling
      [media] s5p-tv: Include missing v4l2-dv-timings.h header file
      [media] exynos4-is: Fix entity unregistration on error path

Tomasz Figa (1):
      [media] exynos4-is: Handle suspend/resume of fimc-is-i2c correctly

Vladimir Barinov (8):
      [media] ml86v7667: override default field interlace order
      [media] V4L2: soc_camera: Renesas R-Car VIN driver
      [media] ARM: shmobile: r8a7778: add VIN support
      [media] ARM: shmobile: BOCK-W: add VIN and ML86V7667 support
      [media] ARM: shmobile: BOCK-W: enable VIN and ML86V7667 in defconfig
      [media] ARM: shmobile: r8a7779: add VIN support
      [media] ARM: shmobile: Marzen: add VIN and ADV7180 support
      [media] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig

Wei Yongjun (3):
      [media] usbtv: remove unused including <linux/version.h>
      [media] davinci: vpif_display: fix error return code in vpif_probe()
      [media] davinci: vpif_capture: fix error return code in vpif_probe()

 Documentation/DocBook/media/v4l/controls.xml       |  168 +-
 .../DocBook/media/v4l/lirc_device_interface.xml    |    4 +-
 Documentation/DocBook/media/v4l/pixfmt-nv16m.xml   |  171 ++
 Documentation/DocBook/media/v4l/pixfmt.xml         |    7 +-
 Documentation/DocBook/media/v4l/subdev-formats.xml |  611 ++--
 .../DocBook/media/v4l/vidioc-create-bufs.xml       |   41 +-
 .../DocBook/media/v4l/vidioc-g-dv-timings.xml      |    6 +-
 .../DocBook/media/v4l/vidioc-g-jpegcomp.xml        |    4 +-
 Documentation/DocBook/media_api.tmpl               |   10 +-
 .../devicetree/bindings/media/i2c/adv7343.txt      |   48 +
 .../devicetree/bindings/media/i2c/ths8200.txt      |   19 +
 .../devicetree/bindings/media/i2c/tvp7002.txt      |   53 +
 .../devicetree/bindings/media/s5p-mfc.txt          |    1 +
 .../devicetree/bindings/media/video-interfaces.txt |    2 +
 Documentation/video4linux/v4l2-controls.txt        |   21 +-
 MAINTAINERS                                        |   26 +-
 arch/arm/configs/bockw_defconfig                   |    7 +
 arch/arm/configs/marzen_defconfig                  |    7 +
 arch/arm/mach-davinci/board-da850-evm.c            |    6 +-
 arch/arm/mach-shmobile/board-bockw.c               |   41 +
 arch/arm/mach-shmobile/board-marzen.c              |   44 +-
 arch/arm/mach-shmobile/clock-r8a7778.c             |    5 +
 arch/arm/mach-shmobile/clock-r8a7779.c             |   10 +
 arch/arm/mach-shmobile/include/mach/r8a7778.h      |    3 +
 arch/arm/mach-shmobile/include/mach/r8a7779.h      |    3 +
 arch/arm/mach-shmobile/setup-r8a7778.c             |   34 +
 arch/arm/mach-shmobile/setup-r8a7779.c             |   37 +
 drivers/media/common/siano/Kconfig                 |    2 +
 drivers/media/common/siano/smsdvb-main.c           |    3 +-
 drivers/media/dvb-core/dvb-usb-ids.h               |    2 +
 drivers/media/dvb-frontends/mb86a20s.c             |   16 +-
 drivers/media/i2c/Kconfig                          |   23 +
 drivers/media/i2c/Makefile                         |    2 +
 drivers/media/i2c/ad9389b.c                        |  163 +-
 drivers/media/i2c/adv7343.c                        |   89 +-
 drivers/media/i2c/adv7511.c                        | 1198 ++++++++
 drivers/media/i2c/adv7604.c                        |  156 +-
 drivers/media/i2c/adv7842.c                        | 2946 ++++++++++++++++++++
 drivers/media/i2c/ml86v7667.c                      |    7 +-
 drivers/media/i2c/mt9v032.c                        |   17 +-
 drivers/media/i2c/ov9650.c                         |    2 +-
 drivers/media/i2c/s5c73m3/s5c73m3-core.c           |    5 +
 drivers/media/i2c/s5k6aa.c                         |    2 +-
 drivers/media/i2c/saa7115.c                        |  169 +-
 drivers/media/i2c/saa711x_regs.h                   |   19 +
 drivers/media/i2c/smiapp-pll.c                     |   17 +
 drivers/media/i2c/smiapp/smiapp-core.c             |   31 +-
 drivers/media/i2c/soc_camera/mt9m111.c             |   38 +-
 drivers/media/i2c/soc_camera/mt9t031.c             |    7 +-
 drivers/media/i2c/ths7303.c                        |    6 +-
 drivers/media/i2c/ths8200.c                        |  123 +-
 drivers/media/i2c/tvp514x.c                        |   20 +-
 drivers/media/i2c/tvp7002.c                        |   73 +-
 drivers/media/media-entity.c                       |   14 +-
 drivers/media/pci/bt8xx/bttv-cards.c               |   26 +-
 drivers/media/pci/bt8xx/bttvp.h                    |    3 +
 drivers/media/pci/cx23885/Kconfig                  |    1 +
 drivers/media/pci/cx23885/cx23885-av.c             |   13 +
 drivers/media/pci/cx23885/cx23885-cards.c          |    6 +-
 drivers/media/pci/cx23885/cx23885-core.c           |    5 +-
 drivers/media/pci/cx23885/cx23885-dvb.c            |   53 +-
 drivers/media/pci/cx23885/cx23885-video.c          |    5 +-
 drivers/media/pci/cx23885/cx23885-video.h          |   26 +
 drivers/media/pci/cx23885/cx23885.h                |    2 +
 drivers/media/pci/cx88/Kconfig                     |   11 +-
 drivers/media/pci/cx88/cx88.h                      |    2 +-
 drivers/media/platform/Kconfig                     |   12 +-
 drivers/media/platform/Makefile                    |    2 +
 drivers/media/platform/blackfin/bfin_capture.c     |    9 +-
 drivers/media/platform/coda.c                      | 1508 ++++++++--
 drivers/media/platform/coda.h                      |  107 +-
 drivers/media/platform/davinci/vpbe_display.c      |   23 +-
 drivers/media/platform/davinci/vpbe_osd.c          |   45 +-
 drivers/media/platform/davinci/vpbe_venc.c         |   97 +-
 drivers/media/platform/davinci/vpif_capture.c      |  162 +-
 drivers/media/platform/davinci/vpif_capture.h      |    2 +
 drivers/media/platform/davinci/vpif_display.c      |  221 +-
 drivers/media/platform/davinci/vpif_display.h      |    3 +-
 drivers/media/platform/davinci/vpss.c              |   62 +-
 drivers/media/platform/exynos-gsc/gsc-core.c       |   22 +-
 drivers/media/platform/exynos-gsc/gsc-core.h       |    1 +
 drivers/media/platform/exynos-gsc/gsc-m2m.c        |    1 +
 drivers/media/platform/exynos4-is/fimc-core.c      |    2 +
 drivers/media/platform/exynos4-is/fimc-is-i2c.c    |   33 +-
 drivers/media/platform/exynos4-is/fimc-is-param.c  |    4 +-
 drivers/media/platform/exynos4-is/fimc-is-regs.c   |    4 +-
 drivers/media/platform/exynos4-is/fimc-is.c        |    1 +
 drivers/media/platform/exynos4-is/fimc-isp.c       |    2 +
 drivers/media/platform/exynos4-is/fimc-lite.c      |   17 +-
 drivers/media/platform/exynos4-is/media-dev.c      |   17 +-
 drivers/media/platform/marvell-ccic/cafe-driver.c  |    4 +-
 drivers/media/platform/marvell-ccic/mcam-core.c    |  325 ++-
 drivers/media/platform/marvell-ccic/mcam-core.h    |   50 +-
 drivers/media/platform/marvell-ccic/mmp-driver.c   |  278 +-
 drivers/media/platform/s3c-camif/camif-regs.c      |    8 +-
 drivers/media/platform/s5p-g2d/g2d.c               |    1 +
 drivers/media/platform/s5p-mfc/regs-mfc-v6.h       |    4 +-
 drivers/media/platform/s5p-mfc/regs-mfc-v7.h       |   61 +
 drivers/media/platform/s5p-mfc/s5p_mfc.c           |   32 +
 drivers/media/platform/s5p-mfc/s5p_mfc_cmd.c       |    2 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_cmd_v6.c    |    3 +
 drivers/media/platform/s5p-mfc/s5p_mfc_common.h    |   23 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c      |   12 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_dec.c       |   90 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_enc.c       |  150 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_opr.c       |    2 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c    |  149 +-
 drivers/media/platform/s5p-tv/hdmi_drv.c           |    3 +-
 drivers/media/platform/soc_camera/Kconfig          |    8 +
 drivers/media/platform/soc_camera/Makefile         |    1 +
 drivers/media/platform/soc_camera/mx3_camera.c     |   67 +-
 drivers/media/platform/soc_camera/rcar_vin.c       | 1486 ++++++++++
 .../platform/soc_camera/sh_mobile_ceu_camera.c     |    9 +-
 drivers/media/platform/soc_camera/soc_camera.c     |   40 +-
 drivers/media/platform/vsp1/Makefile               |    5 +
 drivers/media/platform/vsp1/vsp1.h                 |   74 +
 drivers/media/platform/vsp1/vsp1_drv.c             |  527 ++++
 drivers/media/platform/vsp1/vsp1_entity.c          |  181 ++
 drivers/media/platform/vsp1/vsp1_entity.h          |   68 +
 drivers/media/platform/vsp1/vsp1_lif.c             |  238 ++
 drivers/media/platform/vsp1/vsp1_lif.h             |   37 +
 drivers/media/platform/vsp1/vsp1_regs.h            |  581 ++++
 drivers/media/platform/vsp1/vsp1_rpf.c             |  209 ++
 drivers/media/platform/vsp1/vsp1_rwpf.c            |  124 +
 drivers/media/platform/vsp1/vsp1_rwpf.h            |   53 +
 drivers/media/platform/vsp1/vsp1_uds.c             |  346 +++
 drivers/media/platform/vsp1/vsp1_uds.h             |   40 +
 drivers/media/platform/vsp1/vsp1_video.c           | 1069 +++++++
 drivers/media/platform/vsp1/vsp1_video.h           |  144 +
 drivers/media/platform/vsp1/vsp1_wpf.c             |  233 ++
 drivers/media/radio/Kconfig                        |   12 +-
 drivers/media/radio/Makefile                       |    1 +
 drivers/media/radio/radio-aztech.c                 |   81 +-
 drivers/media/radio/radio-maxiradio.c              |   15 +-
 drivers/media/radio/radio-sf16fmr2.c               |    2 +-
 drivers/media/radio/radio-shark.c                  |    2 +-
 drivers/media/radio/si470x/radio-si470x-usb.c      |   11 -
 .../media/radio/tea575x.c                          |   21 +-
 drivers/media/rc/Kconfig                           |    3 +-
 drivers/media/rc/ene_ir.c                          |   30 +-
 drivers/media/rc/ene_ir.h                          |    2 +-
 drivers/media/rc/iguanair.c                        |    4 +-
 drivers/media/rc/ir-lirc-codec.c                   |   12 +-
 drivers/media/rc/lirc_dev.c                        |   10 +
 drivers/media/rc/rc-main.c                         |   52 +-
 drivers/media/rc/redrat3.c                         |  120 +-
 drivers/media/rc/ttusbir.c                         |    1 +
 drivers/media/rc/winbond-cir.c                     |   38 +-
 drivers/media/tuners/e4000.c                       |   82 +-
 drivers/media/tuners/e4000.h                       |    2 +-
 drivers/media/usb/cx231xx/cx231xx-cards.c          |   40 +
 drivers/media/usb/cx231xx/cx231xx-dvb.c            |    1 +
 drivers/media/usb/cx231xx/cx231xx.h                |    1 +
 drivers/media/usb/dvb-usb-v2/Kconfig               |    2 +-
 drivers/media/usb/dvb-usb-v2/dvb_usb.h             |    5 -
 drivers/media/usb/dvb-usb-v2/dvb_usb_core.c        |  134 +-
 drivers/media/usb/dvb-usb-v2/lmedm04.c             |    2 +-
 drivers/media/usb/dvb-usb/dib0700_devices.c        |   12 +-
 drivers/media/usb/dvb-usb/m920x.c                  |    2 +-
 drivers/media/usb/em28xx/em28xx-i2c.c              |    2 +-
 drivers/media/usb/em28xx/em28xx-video.c            |    1 +
 drivers/media/usb/gspca/Kconfig                    |    9 +
 drivers/media/usb/gspca/Makefile                   |    2 +
 drivers/media/usb/gspca/gspca.c                    |    6 +-
 drivers/media/usb/gspca/ov519.c                    |   32 +-
 drivers/media/usb/gspca/ov534.c                    |    3 +-
 drivers/media/usb/gspca/stk1135.c                  |  685 +++++
 drivers/media/usb/gspca/stk1135.h                  |   57 +
 drivers/media/usb/hdpvr/hdpvr-core.c               |   11 +-
 drivers/media/usb/hdpvr/hdpvr-video.c              |    9 +-
 drivers/media/usb/s2255/s2255drv.c                 |    9 +-
 drivers/media/usb/stk1160/Kconfig                  |   16 +-
 drivers/media/usb/stk1160/stk1160-v4l.c            |    6 +-
 drivers/media/usb/tlg2300/pd-main.c                |   37 +-
 drivers/media/usb/usbtv/Kconfig                    |    2 +-
 drivers/media/usb/usbtv/usbtv.c                    |  151 +-
 drivers/media/v4l2-core/Makefile                   |    1 +
 drivers/media/v4l2-core/v4l2-async.c               |  112 +-
 drivers/media/v4l2-core/v4l2-common.c              |  357 ---
 drivers/media/v4l2-core/v4l2-ctrls.c               |   67 +-
 drivers/media/v4l2-core/v4l2-dev.c                 |    5 +-
 drivers/media/v4l2-core/v4l2-dv-timings.c          |  609 ++++
 drivers/media/v4l2-core/v4l2-mem2mem.c             |   69 +-
 drivers/media/v4l2-core/v4l2-of.c                  |   13 +-
 drivers/media/v4l2-core/videobuf2-core.c           |  269 +-
 drivers/staging/media/Kconfig                      |    2 +
 drivers/staging/media/Makefile                     |    1 +
 drivers/staging/media/lirc/lirc_igorplugusb.c      |   56 +-
 drivers/staging/media/msi3101/Kconfig              |    3 +
 drivers/staging/media/msi3101/Makefile             |    1 +
 drivers/staging/media/msi3101/sdr-msi3101.c        | 1931 +++++++++++++
 include/linux/platform_data/camera-mx3.h           |    4 +
 include/linux/platform_data/camera-rcar.h          |   25 +
 include/linux/platform_data/vsp1.h                 |   25 +
 include/media/adv7343.h                            |   20 +-
 include/media/adv7511.h                            |   48 +
 include/media/adv7842.h                            |  226 ++
 include/media/davinci/vpif_types.h                 |    4 +
 include/media/lirc_dev.h                           |    1 +
 include/media/media-entity.h                       |    4 +
 include/media/mt9v032.h                            |    4 -
 include/media/rc-core.h                            |    4 +
 include/media/saa7115.h                            |   77 +-
 include/media/smiapp.h                             |    1 -
 include/{sound/tea575x-tuner.h => media/tea575x.h} |    1 +
 include/media/v4l2-async.h                         |   36 +-
 include/media/v4l2-common.h                        |   14 +-
 include/media/v4l2-ctrls.h                         |    1 +
 include/media/v4l2-dv-timings.h                    |  161 ++
 include/media/v4l2-mediabus.h                      |    3 +
 include/media/v4l2-mem2mem.h                       |   13 +
 include/media/v4l2-subdev.h                        |   13 +-
 include/media/videobuf2-core.h                     |   11 +-
 include/uapi/linux/v4l2-controls.h                 |   29 +
 include/uapi/linux/v4l2-dv-timings.h               |    8 -
 include/uapi/linux/v4l2-mediabus.h                 |    6 +-
 include/uapi/linux/videodev2.h                     |   12 +
 sound/i2c/other/Makefile                           |    2 -
 sound/pci/Kconfig                                  |   12 +-
 sound/pci/es1968.c                                 |    2 +-
 sound/pci/fm801.c                                  |    2 +-
 221 files changed, 19059 insertions(+), 2730 deletions(-)
 create mode 100644 Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
 create mode 100644 Documentation/devicetree/bindings/media/i2c/adv7343.txt
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ths8200.txt
 create mode 100644 Documentation/devicetree/bindings/media/i2c/tvp7002.txt
 create mode 100644 drivers/media/i2c/adv7511.c
 create mode 100644 drivers/media/i2c/adv7842.c
 create mode 100644 drivers/media/pci/cx23885/cx23885-video.h
 create mode 100644 drivers/media/platform/s5p-mfc/regs-mfc-v7.h
 create mode 100644 drivers/media/platform/soc_camera/rcar_vin.c
 create mode 100644 drivers/media/platform/vsp1/Makefile
 create mode 100644 drivers/media/platform/vsp1/vsp1.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_drv.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_entity.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_entity.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_lif.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_lif.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_regs.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_rpf.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_rwpf.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_rwpf.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_uds.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_uds.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_video.c
 create mode 100644 drivers/media/platform/vsp1/vsp1_video.h
 create mode 100644 drivers/media/platform/vsp1/vsp1_wpf.c
 rename sound/i2c/other/tea575x-tuner.c => drivers/media/radio/tea575x.c (98%)
 create mode 100644 drivers/media/usb/gspca/stk1135.c
 create mode 100644 drivers/media/usb/gspca/stk1135.h
 create mode 100644 drivers/media/v4l2-core/v4l2-dv-timings.c
 create mode 100644 drivers/staging/media/msi3101/Kconfig
 create mode 100644 drivers/staging/media/msi3101/Makefile
 create mode 100644 drivers/staging/media/msi3101/sdr-msi3101.c
 create mode 100644 include/linux/platform_data/camera-rcar.h
 create mode 100644 include/linux/platform_data/vsp1.h
 create mode 100644 include/media/adv7511.h
 create mode 100644 include/media/adv7842.h
 rename include/{sound/tea575x-tuner.h => media/tea575x.h} (98%)
 create mode 100644 include/media/v4l2-dv-timings.h

--

Cheers,
Mauro

2013-08-17

Mirics MSi3101 SDR Linux driver

Mirics MSi3101

MSi3101 is name of the reference design that consists of two parts, USB ADC and RF-tuner. Used USB ADC is MSi2500 and RF-tuner is MSi001. That designs was introduced somewhere in 2009 aimed for PCTV marked. It is the first and the only one SDR based PCTV solution, which unfortunately never becomes very popular.

Mirics MSi3101 devices
That solution differs notably from the other PCTV solutions as there is no hardware demodulators, instead signal processing is done by host computer software demodulator. That reduces complexity of hardware but downside is increased complexity of software and needed CPU power.

If we compare traditional DTV USB solution and that software solution, we could see that kind of data paths in higher level:

HW, traditional, solution:
antenna => RF-tuner => HW demodulator => USB-interface => PC => TV-application

SW, SDR, solution:
antenna => RF-tuner => ADC => USB-interface => PC => SW demodulator => TV-application

The very first DTV USB ADC

First of all, Mirics MSi2500 USB ADC is very interesting chip! It is very first plain USB ADC I have ever seen, designed for USB2.0 SDR based digital television. Requirements coming from the DTV terrestrial reception means that there must be sampling rates around 10Msps and sampling resolution 10-bit or more. These are hard requirements to meet as all the bits are transferred over rather slow speed USB2.0, which becomes quickly to bottleneck. To tackle that problem chip offers multiple stream format - for more you need sampling rate the less you has resolution and the other way round.


reverse-engineering USB ADC sampling rate formula

Unfortunately I was not able to get any needed register documentation for that chip, which forces me to jump reverse-engineering mode. Whilst I have done reverse-engineering quite a hell much, I don't like to do it as it is simply a waste of time... Fortunately ADCs are rather simply chips as there is not much moving parts, in a good luck only sampling rate. In that case there were mostly sampling rate and stream format which are needed to find out in order to operate chip somehow meaningful.

I thought some time how I could find out ADC sampling rate calculation formula and eventually ended up developing following method. It is mainly based of register value brute-force with sample rate calculation, but contains mixture of some other steps. I could imagine that same method could be useful later, when new USB ADC chips are arriving to market and documentation how to configure ADC sampling rate is not known.

  1. Prerequisites. You must have somehow working driver skeleton which streams ADC data. RF tuner functionality is not needed, but without the tuner step 2 could be hard to pass.
  2. Learn stream format. Implement some logic to driver which calculates all I/Q samples in given period. After the each period calculate sample rate (by driver) and output it to the debug log. I used 5 second period in my tests - more longer period you use, the more accurate sample rate calculation is.
  3. Find out registers involved to sampling rate setting. Sniffing and diffing... For example tune TV to 8 MHz channel, then 6 MHz and test even radio, depending on what app supports. Should not be very hard.
  4. Add "write_reg" V4L2 private control to your driver and some appropriate implementation for it. You could guess why and how - if not that method is not for you.
  5. Start streaming, eg.
    cat /dev/video0 > /dev/null
  6. Brute force different values to sampling rate registers and see what driver reports as calculated sample rate.
    v4l2-ctl -d /dev/video0 --set-ctrl=
    write_reg=0x1234503
Fractional-N frequency synthesizer
Basic knowledge of Fractional-N based frequency synthesizer functionality is needed in order to succeed with that method,  a lot of patience and a little bit luck too. It is easiest to try found meaning for something that changes a lot output sampling rate - in practise it is output divider (Rout, LO div). After that, integer part "N" of PLL multiplier and finally fractional part, which is most hard.


Sample rates measured

Both devices seems to perform very similarly on sampling rate test made. Sampling rate limits were between 1.21 Msps and 15 Msps. Smallest stable sampling rate is a little bit high what I expected, but not too high.

Sampling resolution & stream format

I found 4 different stream formats, all having different resolution. As a USB2.0 device there is direct relation between stream format and sampling resolution and indirect relation for sampling rate. Stream formats known currently supports 14-bit, 12-bit, 10+2-bit and 8-bit resolutions - at least sample bit count got is that, effective resolution (enob) could be a bit less...

I calculated following ~theoretical maximum sampling rates per stream format using assumption maximum USB2.0 effective throughput is 280 Mbit/s.


format resolution sample rate
252 14 8 613 281
336 12 11 484 375
384 10+2 13 125 000
504 8 17 226 562


These results are very theoretical and not tested.

Btw. that stream format register didn't liked injection of new register values when streaming was ongoing :) Result was typically broken stream and it didn't get fixed until device was physically replugged. There could be still some more formats available and I suspect using own firmware you could implement your own formats. At least these are supported by default firmware.

There was also bits to select USB URB Isochronous micro frame size from one of the 1024/2048/3072. 3072 is maximum what USB2.0 supports and I don't see any idea to use smaller as bus datarate is so high in any case.

MSi2500 advertises on USB interface device descriptor that it has some more alternative settings to offer. That same register is likely place to configure those too.

USB device descriptor




RF-tuner

RF tuner used for that design is Mirics MSi001. It supports both Zero-IF and Low-IF, which is very unusual nowadays as most tuners are just Zero-IF only.

Tuner supports multiple bands and wide range frequencies, starting from the 150 kHz and ending up to 2GHz. There is quite big gap between 260 - 410 MHz, but more bigger problem with devices planned for TV usage is unconnected LW/MW/SW and L-Band antennas. These unconnected antennas limits actual frequencies to 50 - 960 MHz. Modding should be possible, but how hard?

testing tuner limits using RF generator

Here is the measured frequency ranges from two different devices I have.


device / mode Mirics MSi3101 SDR Dongle Hauppauge WinTV 133559 LF
VHF_MODE 52 - 132 MHz 49 - 130 MHz
B3_MODE 103 - 263 MHz 98 - 259 MHz
B45_MODE 413 - 960 MHz 391 - 960 MHz


Staging quality

Developing that driver has been relatively big task for me. I started to looking it around one year ago but most of the implementation was done during this summer. There has been numerous new issues to resolve as that is first Linux Kernel USB SDR receiver driver. The fact is that my backgrounds are from the digital television side, DVB API, and that driver is implemented to V4L2 API. I didn't has any existing knowledge from V4L2, which put me position I was forced to learn lot of things. Now I can understand again why some "simple" DVB things could be so hard to implement for firstcomers :)

As there is still multiple unresolved issues that driver could not be mainlined yet. Biggest problem is no less than missing API. So I am putting driver to the Kernel staging which is right place to problematic stuff like that. That is something I will try to kick Mauro to get help as I have so little experience about V4L2 internals. Actually Mauro has already provided some SDR API related patches that are waiting for some discussion and review.

I collected Kernel SDR API requirement specification, which the implementation should follow in the mean it is reasonable possible to implement.

Here is the list of know issues, from critical to less critical. I think resolving API issues is enough to move that driver out from the staging.
  • Kernel SDR API
    • new V4L2 controls
    • do not abuse video-device
    • stream conversions (move to libv4l2?)
    • implementation performance problems are ruled out
  • GNU Radio plugin
    • has performance problems (read => mmap)
    • add more functionality
    • stream conversions with the help of libv4l2
  • separate USB ADC and RF-tuner logic to own drivers
    • USB ADC main driver "msi2500"
    • RF tuner to v4l2 subdev driver "msi001"
  • tons of other changes!
    • feel free to contribute I am open for any help
    • hack hack hack!


Kernel driver development tree

I will keep latest Kernel driver development tree:
http://git.linuxtv.org/anttip/media_tree.git/shortlog/refs/heads/mirics

GNU Radio use example

Install gr-kernel GNU Radio plugin:
http://git.linuxtv.org/anttip/gr-kernel.git

Use LibV4L2 Source it provides.

gr-kernel, LibV4L2 Source, FM radio

v4l2-ctl use example

Whilst LibV4L2 Source in gr-kenel package is recommended application to use device, it is still possible to use it via standard v4l2-ctl tool. These commands will surely change without a any notification when API issues are implemented correctly, but at the time that blog post is written you could capture 94.3 MHz FM radio dump to file using following commands:

$ v4l2-ctl -d /dev/video0 --all
$ v4l2-ctl -d /dev/video0 --set-ctrl=sampling_rate=2000000
$ v4l2-ctl -d /dev/video0 --set-ctrl=tuner_bw=200000
$ v4l2-ctl -d /dev/video0 --set-ctrl=tuner_rf=94300000
$ cat /dev/video0 > ./my_fm_radio_record.bin


Pictures