RDS Decoder

This is an quite old project I made in 1996 but still interesting. It´s an simple RDS decoder based on TDA7330B RDS demodulator and AT90S2313 (obsolete part, replace with Atmel ATtiny2313) controller. The RDS data is displayed on an 2×16 character LCD. It shows program service name, RDS clock, TA flag status and scrolling 64 characters long radio text. The decoder needs an Stereo multiplex signal as input which is normally found at the input pin of an Stereo decoder IC in many radios.

Source code is available in assembler, I will make a C version some day. Decoding of the RDS data stream is based on Motorola´s “AN460 – RDS decoder using the MC68HC05”, see this document for details.

PCB with LCD

PCB with LCD connected

PCB top

PCB top

PCB bottom

PCB bottom

Showing program service name, clock, TA flag and scrolling radio text A

Showing program service name, clock, TA flag and scrolling radio text A

Showing program service name, clock, TA flag and scrolling radio text B

Showing program service name, clock, TA flag and scrolling radio text B

RDS Decoder in SMD

EN50067 RDS Standard
EN50067 RDS Standard
654.5 KB
Motorola's AN460
Motorola's AN460
Motorola RDS Decoder an460.pdf
195.2 KB
RDS Decoder Firmware
RDS Decoder Firmware
Version: 1.04
32.9 KB
RDS Decoder Gerber
RDS Decoder Gerber
12.3 KB
RDS Decoder Schematic
RDS Decoder Schematic
Version: 1.0
493.5 KB
US RBDS Standard
US RBDS Standard
1.1 MB

64 thoughts on “RDS Decoder

  1. Hello Michael,
    REGARDS, merry Christmas

  2. I have a request to the RDS decoder. Could you send me on e-mail a file from the “drawing” of PCB (with AT90S2313 and TDA7330B in sockets like on the image)?
    On the Internet there are many projects of this type, but they are entirely or mostly built on the elements of SMD. Unfortunately I have neither the equipment nor the experience in soldering SMD elements.

    Thank you in advance for your reply.

  3. I am trying to interface this RDS decoder project with a TDA7000 FM receiver IC. I am however battling to find the position where to connect the two with each other. Your help will be greatly appreciated.

    CJ Loubser

    • The TDA7000 is not suitable to receive RDS signals since this seems to be a mono radio. The RDS signal is multiplexed with the stereo audio signal and therefore you need a receiver which is capable of receiving and decoding of stereo audio.

        • It´s a question of demodulation capability of your receiver. The TDA7000 uses a simple demodulator, it doesn´t convert to mono, it simply demodulates only mono.
          The way a stereo audio is multiplexed and modulated to a RF carrier makes this possible.

          • Thanks for clarifying that to me. I now connected the RDS deocder to a stereo FM receiver. When starting the RDS decoder up the LCD only displays “RDS DECODER”. It does not srart decoding.

            The IC I connected the RDS decoder to is a RDA5807SP stereo FM tuner. I connected the MUX input cable to pin 4 since this is where the data sheet specified the FM input to be. I also connected a ground cable from one of the ground pins on the IC and connected it to the RDS decoder as specified by your schematics.

            Am I doing something wrong here?. Why won´t it start decoding? Your help will greatly be appreciated.


          • The RDA5807SP seems to be a full integrated tuner which requires almost no external components.
            Pin 4 is the RF input, from antenna?

            Problem is, due to full integration there is no access to multiplex signals after demodulation. Everything is on-chip. The decoder will not work with pure RF since it has no internal receiver.

            You need a tuner or tuner IC which provides a signal after IF demodulation but before stereo demultiplexer.

  4. Thank you for your help. If I try to connect the RDS decoder to say…A 30 year old stereo radio that has no IC´s on it just analog components. How do I then locate the MUX input?


        • That IC proved to be monolithic so it won´t work. I do however have a old stereo radio with no IC´s in it at all. How do I go about finding the MUX signal in a radio like that?


          • For this IC the signal you are looking for should be available at pin 11.

          • Find the demodulator output after the 1st or even 2nd IF (intermediate frequency), prior to any filtering. This signal should contain the full multiplexed spectrum for stereo, including the RDS signal.

        • Thank you very much for your help! The decoder is up and running now and working like a dream. Your help is greatly appreciated.

          Kind Regards

          • There is nothing to alter on my OSD board.

            1. add a high side resistor on input RPM2 to connect the input to the controller. 100-1000 Ohm will be fine.
            2. connect the second UART signal to input RPM2


  5. Dear Mickael,
    I try to help my son radio project for his studies and your built seems me perfect for that. Could you say me if your V1.04 firmware allows anothers displays than English one please ?
    In other hand, i can´t get your firmware on this site (zipped file error). Could you please send it directly to me ?
    With all my thanks.

    • The files are fine, just do not uses the Windows included unzip functionality. Try 7zip instead.

      The firmware will support whatever language you want. There is anyway not much text included. Most is coming via RDS.

      • Dear Mickael,

        You were right, unzip version wasn´t included in my late windows. Now, i have your assembler firmware. Just a last question: did you develop it in c language or else please, and if yes, could we get this firmware ?
        Thank you very much.

        • Code is only available in assembler. It was written at the beginning of my programming attempts, had no idea about C these times.

  6. Hy Eddy, congratulation for your work. Can you help me please with a part list, schematic and the code you used for the ATtiny2313?? Looking forward for your reply. Thanks

  7. Hi.
    please Help me!

    i used CXA1538 FM/AM Radio IC.
    Which pin should be connected to the input RDS Circit?

    MPX REG (pin 28) ? or other pins?

    thank you…

    • This IC obviously has an internal stereo decoder. The stereo multiplex signal is not available on any of the IC pins. So the RDS decoder will not work with that chip.

  8. Hi Michael, I have built your circuit and programmed an ATtiny 2313. I haven´t as jet tried to connect it to a radio. When I switch on the finished circuit without a connected radio, should I see anything? I thought I would see at least the “:” as the hours/minutes separator. All I see is one line of 5×7 rectangles.

    Many thanks,


  9. Michael, couple of years ago I made one of your designed decoders and “upgraded” a PE Gemini FM stereo receiver I had made back in 1972. The PCB I used was a wirewrap / rats nest approach. Messy but it works.
    I am about to “upgrade” an old Quad FM4 receiver with an RDS decoder and wondered if by any chance you have a gerber file of the PCB so I might make a neater job this time.
    Thanks in advance

  10. Hi Michael, i used LA1844M – Monolithic Linear IC For Home Stereo Single-chip Tuner IC.
    Which pin should be connected to the input RDS circuit?

    MPX output (pin 8 ) ? or other pins?..Please Help me!

    Many thanks.

      • Hi Michael, thank your answer. I have some questions,Can you help me?.
        I can replace the ATtiny2313 with ATtiny2313A okay? and the fuse bit I can set
        Low : 0xF0
        High: 0xDB
        Extended: 0xFF
        Brownout 2.7V
        External Clock.
        Because i see your schematic input XTAL1 is external clock??


  11. Michael, when I powered up the circuit, not connected to the Tuner. LCD display “RDS decoder” then I used VOM measured Pin 14 (quality) of TDA7330B , it at 3V – 4V. I do not understand ??

    I read the document “RDS decoder based 68hc11”, it is written:
    “The clock signal (1187.5 Hz), the signal of data RDS synchronized with the clock, a signal of quality which indicates by a high state if the signal received contains RDS data “

  12. Hallo Michael,
    I have built the RDS decoder followed this idea based on the Attiny 2313A – it is a very useful when it is used together with an old tube radio. You will be kindly asked for developing one more option and implementing it in the source code – certainly if possible. This option should allow to show the actual tuned frequency (14A group) instead of the program name depending on the PortD.5 state: HIGH = Program name (as it is now); LOW = Frequency tuned (###,# MHz format).
    Would you be helpful in this matter.


  13. Hello,
    I made this decoder but using different RDS chip (SAA6581). But even with no MPX signal connected, there should be “RDS decoder” displayed. But all I am getting is gibberish. Sometimes it even looks like it wants to display that text, but it disappears and is replaced by gibberish.
    My display is not a HD44780 one, but ST7066U. From what I have read, they should be compatible.
    I made a short video: https://youtu.be/nn1AtGgPJkI
    Can you please advise?

    • Either the character set of your display is different or you have a LCD signal timing issue. I tend to the latter. Check your LCD signal wiring and fiddle with the LCD timing in code.

  14. Hallo welcher Mikrocontroller wählt den älteren oder jüngeren ATTINY2313. Wird es ein Problem geben mit
    Bootloader – ob Sie einen Bootloader benötigen, und Einstellungen
    richtiger bisfusee
    Ich benutze Arduino.

  15. I am trying to interface this RDS decoder project with a CD2003GP FM receiver IC. I am however battling to find the position where to connect the two with each other. Your help will be greatly appreciated.

Leave a Reply