Find the answer to your Linux question:
Results 1 to 10 of 10
Hi, I have a USB radio device that didn't come with Linux drivers. When I plug it in, under the Device Manager, I can see the USB device: audio interface ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Mar 2008
    Posts
    9

    Make USB radio device work - panic, please help!


    Hi,

    I have a USB radio device that didn't come with Linux drivers. When I plug it in, under the Device Manager, I can see the USB device: audio interface (for sound) and HID interface (for tuning). I can also see a new file: /dev/dsp1.

    I opened /dev/dsp1 with VLC. It worked the first time, but now VLC plays only static! I tried it on another Linux machine and same thing happened: VLC played it, I closed VNC, unplugged the device, restarted VLC, plugged in the device and VLC couldn't play it any more (/dev/dsp1 was opened successfully, but you can hear only static).

    I thought this is a VLC issue, but I don't think it is. When you plug it in for the first time, some files must be written somewhere on the hard drive. I poked around /sys/devices/pciXXX, but I don't know enough about Linux device drivers to understand what's in there.

    I have to get this solved for a school project and I'm panicking. I couldn't get an answer for this on the VLC forums or the Ubuntu Multimedia forums, so I'm trying here.

    Thanks,
    Tiberiu

  2. #2
    Linux Enthusiast
    Join Date
    Apr 2004
    Location
    UK
    Posts
    733
    what is the make and model of device you are using. A link to the manufacturer's website would be handy too.

    Once we have that we may be able to help you out.

    Chris...
    To be good, you must first be bad. "Newbie" is a rank, not a slight.

  3. #3
    Just Joined!
    Join Date
    Mar 2008
    Posts
    9
    Hi Chris,

    Thanks for the reply. The device's web page is Mixed-Signal ICs - USB FM Radio Reference Design

    They have some documentation, but it is all for Windows (and they don't provide too much info). They even provided the player's source code (Visual C++). I've been trying to understand the code and translate it to Linux, but I'm on a big time crunch. What I'm trying to do is set the frequency of the radio device on a Windows machine to some radio station and then open the audio device (/dev/dsp1) on Linux with an ALSA lib application. I wrote the ALSA lib application, but all I get is static. How come VLC played it for the first time, but now it plays static?!

    I don't think the documentation will help, but you might know better.

    Thanks so much,
    Tiberiu

  4. $spacer_open
    $spacer_close
  5. #4
    Linux Enthusiast
    Join Date
    Apr 2004
    Location
    UK
    Posts
    733
    From your description it seems like you might be OK. The device has worked when it's plugged in, which means the drivers work and audio works. All you need is a tool for tuning it in.

    fmtools might sort you out, check the package repositories for your distribution in the first instance.

    There are bigger and better tools available, however I'm going with the idea that simplicity means a better chance of it working right now, which seems to be what you are after.

    Let us know how you get on,

    Chris...
    To be good, you must first be bad. "Newbie" is a rank, not a slight.

  6. #5
    Just Joined!
    Join Date
    Mar 2008
    Posts
    9
    Hi Chris,

    Thanks again for the reply. I did download, compiled and ran fmtools, but I get the following error:
    ioctl VIDIOCGAUDIO: Invalid argument

    I don't know too much about v4l, but I don't think the device is "v4l ready". Even the documentation says the device was built for Windows only. I'm amazed that a /dev/dsp1 device even shows up on Linux and that VLC can play it. In the long run I will learn about device drivers and I will write a driver for it, but for now I'm looking for an easy way out.

    My question is: why did VLC play /dev/dsp1 and I could hear a clear signal, and why do I hear static now? What information about the device was "cached" the first time when I played it with VLC?

    Thanks,
    Tiberiu

  7. #6
    Linux Enthusiast
    Join Date
    Apr 2004
    Location
    UK
    Posts
    733
    I'm afraid I've no idea why it worked first time and then not afterwards. The only difference I can think of is that when you first plug it in, the driver module gets loaded. Second time around the module will already be in memory.

    The last few lines demsg will show you which module is being used when you plug it in. You can try removing it with

    Code:
    modprobe -r module_name
    Replacing module_name with the actual module reported by demsg. I would expect the module you are after to be radio-si470x. The Linux Kernel Mailing List announcement of this module indicates that it is the driver for the Si4701 chip, which is the one used by your receiver.

    Even though the documentation says the device is windows only, so does every piece of hardware I own. It should be possible to make it work.

    You could try another radio app, such a kradio to see if you can get better information out of it.

    Let us know how you get on,

    Chris...
    To be good, you must first be bad. "Newbie" is a rank, not a slight.

  8. #7
    Just Joined!
    Join Date
    Mar 2008
    Posts
    9
    Hi Chris,

    Stupid me. I've been trying so hard to get it to work that I haven't even realized that there's a driver out there for this device. In fact, today I contacted SiLabs and I asked them if there is a Linux driver for their device. They said: absolutely no!!!

    Anyway, I'm looking at the source code for this device driver and I'm having some trouble compiling it. I'm trying to compile it as a kernel module (driver) but I think it's meant to be compiled with the kernel.

    Until I figure it out, I've been trying your idea. Btw, I don't have the radio-470sx module in my kernel. The release date for this module is January 2008, and my Ubuntu Gutsy 7.10 doesn't have it. Instead I think my OS is using a generic sound module: snd-usb-audio. In fact, this is the output of dmesg:

    [ 180.524000] usbcore: deregistering interface driver snd-usb-audio
    [ 215.132000] usb 3-1: USB disconnect, address 3
    [ 219.820000] usb 3-1: new full speed USB device using uhci_hcd and address 4
    [ 219.984000] usb 3-1: configuration #1 chosen from 1 choice
    [ 220.032000] hiddev96: USB HID v1.11 Device [SILICON LABORATORIES INC. FM Radio] on usb-0000:00:1d.2-1
    [ 220.140000] usbcore: registered new interface driver snd-usb-audio

    So, I tried: sudo modprobe -r snd-usb-audio. It worked, so I unplugged the device, plugged it back in, started VLC and got: static! Argh!

    My project is due in 2 days and I think I'll have to fake this part. Thanks for all the help. I really appreciate it.

    Tiberiu

  9. #8
    Linux Enthusiast
    Join Date
    Apr 2004
    Location
    UK
    Posts
    733
    Drat! You are right, there is a bug in the code that stops it being compiled as a module. I'm afraid fixing it is beyond me by quite some way.

    Sorry I couldn't help you make it work. Good luck with the rest.

    Chris...
    To be good, you must first be bad. "Newbie" is a rank, not a slight.

  10. #9
    Just Joined!
    Join Date
    Mar 2008
    Posts
    9
    Thanks for all the help Chris.

    Tiberiu

  11. #10
    Just Joined!
    Join Date
    Jun 2008
    Posts
    1

    (Silabs) USB FM Radio Reference Design: Basic Explanation

    This is a basic idea about this situation:

    The USB FM Radio from Silabs is a nice little device, unfortunately Silabs does not supply any support to let it work under Linux... dommage.

    In the freely available application note [AN264.pdf] on Silabs WEB site, it's stated that the device will enumerate four USB interfaces. Three are used to control the Audio and one is a HID interface which allows to control the FM receiver...

    Fortunately the Audio part seems to be compliant with the USB::AUDIO profile, so the latests Linux kernel might handle it correctly. If the device [/dev/dsp1] is created this is the case. What is actually missing is the HID control software to set and read the synthesized frequency, read the RDS data, etc. I've googled a little and this specific software has still to be written, mainly to tune the frequency and be able to hear something on the audio stream...

    Second step is to add the feature (available in VLC) which copies the audio stream from [/dev/dsp]1 to the audio device output.
    Then you get exactly the same thing as the application provided by Silabs.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •