Icom (CI-V or band Data) to Yaesu BCD Band Data Converter

After the 2011 Camb-Hams DX’Pedition to Arran and using the Discovery 64 on 6m and making some good contacts on it I decided to bite the bullet and go buy a decent 6m Amplifier.

I have been thinking of getting an amplifier for HF and 6m for a while but didn’t want to have 2 extra amplifiers in the shack, one for HF and one for 6m (50MHz).  There are a few options about for a combined HF + 6m amplifier and luckily a Yaesu VL-1000 Quadra (1KW HF and 500w on 6m) recently came available second hand at Martin Lynch and Sons so while standing out in the single spot in the garden at the Arran DX site where I could get decent and reliable Vodafone coverage I gave them a call, agreed a price and had it shipped, bullseye!

The Quadra needs to switch bands for bandpass switching which can be achieved by sniffing RF from the exciter or via Yeasu’s 4 bit Band Data interface which most Yaesu radios support.  However my exciter is an Icom IC-756pro3 and Icom do external band switching by varying a voltage on a single pin between 0v and 8v depending upon the band selected (note WARC bands are not individually identified), I could also use the CI-V frequency data (with CI-V Transceive set to ON):


L = Low / 0v, H = High / 5v

The Project

CI-V to Yaesu Band Data_v1.1 Icom to Yaesu Band Data_PCB_v1.0


So what I need to do is build an interface which takes the Icom Band Voltage from the Icom IC-756pro3 ACC2 port and converts it to Yaesu 4 bit Band Data.  If I wanted to use just CI-V I could use a PICAXE-08M (8 PIN) which support 4 output pins, Yaesu Band A to D and one serial in PIN used for CI-V but the SERIN support for the 08M is limited.  I decided to go for a PICAXE-20X2 as it has a hardware serial pin, supports 19200 baud, the fastest the IC-756pro3 manages and gave me plenty of spare pins.  My final spec sheet was:

  • Auto switching between CI-V and Icom analogue band data as source input.
  • 4 pins outputting Yaesu Band Data to the Quadra VL-1000.
  • 8 additional user configurable pins, i.e. selected pin go high on selected band to drive external equipment like coax relays.
  • Support remote (on/off) switching of the Quadra VL-1000 by providing 13.8v to the Quadra when the IC-756pro3 is switched on.
  • Have the PTT line integrated within the interface connections, it is not connected nor needed for the PIC.

NOTE:  I found the VL-1000 manual is close to useless with regards to the Pinout diagrams – it has a picture with pins numbered but has a list next to it in in letters A,B,C etc…  I also blew the 5A fuse inside my IC-756pro3 and damaged a track later on by not getting the 13.8v on the correct pin, i.e. following the manual so be warned.

The PICAXE code:

Download the code, schematics and PCB layout here.

The code is split into 2 sections based on whether the CI-V is connected.  If the CI-V is connected by default it is high which can be detected by the PIC which is what the line in the code equalling ‘IF CIVinPIN = 1 or CIVorADC = 0 then’ does.  If there is CI-V then the PICAXE runs the CI-V routine to decode the frequency and works out the MHZ and 100KHz, i.e 14.123MHz becomes decimal 141.  If there is no CI-V connected (the CI-V input to the PICAXE chip will be 0v) then the PICAXE uses a routine to look at the band data voltage using ADC to determine the band, first you need to make sure you don’t put more than 5v into the PIC, so you divide it with a couple of resistors R1/R2 so the voltage is 0.6 that of its original (i.e. 8v becomes 4.8v to the PIC). You then simply read the voltage as a function of ADC, 4.8v is 96% of 5v (we are using READADC10 which is 10bit value and the max ADC value is therefore 1024) so 4.8v = 96% of 1024 the [max] ADC value is 983. All we now do is for each band give a lower and upper limit for each ADC value (accounting for rig variance) and if the ADC value falls within a range then the appropriate band is chosen and BCD pins set accordingly.

If the band voltage is say 6.2v out the radio what band are we on? Reduced first by R1/R2 the voltage becomes 3.72v into the PIC, this has an ADC value (3.72/5v * 1024) of about 762 which rightly falls into the 80m band range. 80m has a lower ADC limit of 700 and an upper ADC limit of 799.

Remember the PIC code is split in 2, the top half is for CI-V decoding and the bottom half band voltage decoding.

When the radio is switched on 13.8v is taken from ACC2 on the IC-756pro3 which powers the PICAXE and also goes to the VL-1000 to switch it on, ensure the remote switch on the back of the VL-1000 is set to ON.


23/07/11 – Version 1.1 released:

  • Improved CI-V string searching
  • Additional checks in Band Data routine to ensure we didn’t get there by mistake

07/08/14 – Version 1.2 released:

  • Update to schematic, R3 added on CI-V input

Code now works fine with HRD controlling the radio over CI-V and all band switching works independent of whether the radio or HRD initiates a band switch.

17/07/11 – I received an email from Jack Brindle, W6FB who commented “There is one change I would suggest in the output table, though. The BCD code 0x0 is not defined, but is used by some manufacturers. For example Elecraft uses it in the K3 for 60 meters. However, 0xF (all ones) _is_ defined as a no-band selector.”  So with that in mind I’ve changed the code so ‘no band selected’ is now all 1’s (0xF) – which turns out to be 70MHz, see my post about that.

15/07/11- I received a comment from Barry GM3YEH who uses the Icom to Yaesu BCD Band Data Converter on his radio with N1MM contest logging software and a 5B4AGN  BPF and found the rig stays in sync with N1MM software but the BPF only changes to the correct band temporarily then drops into a ‘no band selected’ state after a second or two.  Barry suggested it might be down to N1MM polling the radio which the interface sees as 0v on the CI-V line which makes the code execute the Band Data Voltage code for which there is no band voltage data so it defaults to 0, ‘no band selected’.  On 230711 I reworked the code so it now has a much better CI-V ‘search’ string so it doesn’t get false values and also added an extra check in the Band Voltage code as there were times, as mentioned above, that the code would move there even if it was receiving CI-V data.

11/03/13 – HB9LF provided a schematic version using an 74HC42 binary to decimal chip wired in parallel with the Yaesu BCD lines to give an ouput signal per band.

01/06/14 – VE7FM Steve told me he needed to swap pins 7 and 1 on the DB15(Band data 2) connector, I’ll need to open my unit to confirm but be aware.



Here are some images of the Mk2 version, which needs it’s own page when I get time…


  1. Nick Lewis

    Hi Guys

    Looking for the Icom (CI-V or band Data) to Yaesu BCD Band Data Converter box made up ready to plug and play, would be a available somewhere.


    1. m1bxf (Post author)

      Hi Nick,

      I’m just catching up on lots of webpage activities after/during medical treatment. I don’t currently supply any kits or boxs for the projects I publish. My webpage is just a brain dump of my ideas and projects aimed at encouraging others to give them a try. I know that doesn’t work for everyone but unfortunately I don’t the time to support customers of such sales.

      If you had a go at building the project, I’ll certainly try and help where I can, again within the constraints of my time. But nothing is hard. Solder the components as per the schematic, program the chip which is 3 wires and a button on a but of PC (or MAC) SW, and you are going.


  2. Dan

    Fantastic project and thanks for sharing, my issue is the following I want to drive a Motorola F2260A which QRZ seems to say follows the Icom scheme with a yeasu FT857D so essentially the reverse of what your doing if I understand correctly?

    1. m1bxf (Post author)

      Hi Dan.

      It seems the Motorola F2260A uses a voltage (between 0v and 8v) to select the band, see the “Icom Voltage” row in the first table on Band Data Converter webpage: http://www.geekshed.co.uk/icom-ci-v-or-band-data-to-yaesu-bcd-band-data-converter

      So to have the Motorola F2260A controlled from a Yaesu a “UNIT” would need to take the 4-bit BCD “Binary Coded Decimal” output from the Yaesu and convert it to a voltage. It should be possible with PWM “Pulse Width Modulation” or and array of transistors and an LM317 voltage regulator.

      I don’t know of any unit on the market which does this, and my project does not as it would need some extensive hardware changes and testing, and given the lack of devices which use the Icom voltage as a way of band coding, there is little scope for such as unit.

      Sorry I can’t be of more help, but my focus is on my day to day work. If you really need such a unit then it could be made, but I’d need to invoice you for it 🙂

  3. Dave

    I just need to control 2 antennas ( a 3el SteppIR for 20-6m, and an Alpha-Delta DX/B 160-30m. I have a Unified Microsystems BCD-14 controller board but need an Icom Band voltage output to Yaesu BCD converter (The UM BCD-14 only accepts Yaesu BCD data.

    1. m1bxf (Post author)

      I’m glad you found the project useful Dave.

  4. Fabio

    HI ,

    want to look at the schematic and board and code, but the link is broke … any fix ?


    Fabio I4UFH / D4C

    1. m1bxf (Post author)

      Hello Fabio.

      Thanks for letting my know the link is broken, I’ll fix that but for now you can download the files from here;

      I’d be interested to know how you find the project.

  5. VE7FM

    Looking to build this project. It looks to me like pins 1 and 7 are swapped on the schematic diagram for J4 – the Yeasu band data connector.

    1. m1bxf (Post author)

      Hi Steve, Just looked at this and see what you say, then had to think why I done it then realised I’m using the 8 pin DIN pin assigned numbers and not those used in the Yaesu VP-1000 manual! When I get time I’ll update the article to make this clearer as it took me a moment to work it out…

      Gavin, M1BXF.

      1. VE7FM

        I built the interface and it is working. I am still not sure which pinouts you’re using as I can’t find any DIN connector that matches but in the end all that needs to be swapped are pins 7 and 1 on the DB15(Band data 2) connector. I also made one other change, that was to connect the Icom ACC2 plug pin 3 to the Quadra DB15 pin 11 instead of pin 2. I then connected both the ALC and KEY lines. This allows me to use the tune button on the front of the Quadra if desired which keys my Icom 7600 automatically. I am using the analog band voltage instead of CIV, to get it to operate I had to ground the CIV input of the PIC processor(pin 12). I may swap to CIV in the future just so the Quadra always shows the exact band but I believe it uses the same filters for 18/21Mhz and 24/28 Mhz, so it functions just fine. Thank you for posting this, it really makes the Quadra easy to operate. 73, Steve VE7FM

        1. m1bxf (Post author)

          Hi Steve, thanks for the update and adding “TUNE” functionality is a useful addition. I see you are using Band Data 2 on the Quadra, I’m using Band Data 1 (the round plug) so the pinouts on my diagrams are all based on that. And I guess a 10K resistor from PIN12 (CI-V In) on the PICAXE to ground would be a sensible addition (best practice).

          I’ve been thinking about making a new version of this, one which has the band associated with a single pin, so on a DB15, on the back which can be used to drive relays on specific bands, or relays internally and then present the relay output on the DB15 output, would probably need to be a DB25 for the number of bands.
          All in a nicer box with 8x LEDs showing the band selected at that time and with UP/DOWN override option like this; http://www.geekshed.co.uk/yaesu-quadra-manual-band-switch/
          The addition of connections to enable TUNE between the Quadra and Icom will also be good update.

          Thanks for letting me know how you got on this.

          1. VE7FM

            Just a further update. When using the converter in analog band voltage mode it would crash after 5 to 10 minutes, only a power cycle would bring it back. I switched to using CIV data which is working fine but anyone building this should know if they have no other CIV devices connected you will need to add a pullup resistor on the CIV line as the output from Icom is open collector. I used a 10K resistor to the regulated 5 volt line. It is working great so far.

          2. m1bxf (Post author)

            Hi Steve,

            It’s a very good point and I’ve noted it as an update I need to do to the published article. Along with the other connections to allow TUNE mentioned.

            As you probably know it’s bad practice to leave input pins floating, hands up there on that one, so will update when I get a moment.


  6. Jerry

    I have a Elecraft K3 and an Icom PW-1. Can this circuit be reversed to connect the BCD band data of the K3 to the CI-V for the PW-1?

    1. m1bxf (Post author)

      Hi Jerry,

      It will be possible to do this, do you know the CI-V commands the PW-1 supports? Is it standard radio write or read commands?


  7. LeRoy Phelan

    I drive my Quadra with a Yaesu FT847. BCD control is not there. Has anyone used a Picaxe to read the CAT output and convert it to BCD to change bands on the Quadra amp? And maybe with a little antenna switching on the side.
    Thanks for any info.

    LeRoy KF7CQ

  8. Bob Copeland/G4PDF

    Hi Gavin et crew. I have just been reading about the Quadras need for BCD coding and musing that it would be an ideal project for a PICAXE interface – and low and behold, here it is. Excellent work Gavin. I am about the try my first PICAXE project (the simulation looks OK). It will be a simple Antenna selector to replace 4 x 555 toggle elements. Should be simple but the hardware may not as straightforward as the simulation suggests Hi.
    Reading your code is a little beyond me a this point, but I could replace the internals of a Top-Ten band antenna-relay selector unit, AND have a BCD coded output for an Amp like the Quadra; very neat.
    Thanks again for providing the details here – it may have provided the confidence and impetus for me to ‘roll my own’.
    PICAXE18 development board is in the post-Christmas post.
    73 de Bob/G4PDF

  9. Barry

    Hi Gavin,
    Thanks for a great description of your CI-V to BCD project. This is exactly what I need to let me auto band switch my HF bandpass filter (5B4AGN design) from my IC-7000 and also from the PC running N1MM. The BPF doesn’t have CI-V capability as standard, but it does take BCD – so I’ve built a version of your circuit and hooked it into the BPF. Now I can get the BPF to auto band switch from the rig CI-V and that works perfectly. When I add the CI-V cable from the PC running N1MM I get a strange behaviour. N1MM and the rig stay in sync OK when I change bands, but the BPF changes to the correct band temporarily, but then drops into a ‘no band selected’ state after a second or two. N1MM does a regular poll of the CAT line and I’m wondering if this is what’s knocking my BPF into the ‘no band selected’ condition. I was wondering if the BCD pins on the 20X2 might be getting changed due to the polling signals that N1MM is squirting onto the CI-V bus…and if so, is there anything I could try to stop that hapenning? I’m not too good with coding but I’ve had a look at the code you provided to see if I could find a way to modify it to avoid these dropouts…but no success so far. I wonder if you have any hints or ideas that might be worth me exploring.
    Best 73 de Barry GM3YEH (Galston).

    1. Rob M0VFC

      Hi both,

      A quick look at the code suggests that you’re probably right, Barry – the $FE$FF preamble applies to all CI-V commands, going both directions along the bus.

      You probably need to check that the third byte after the preamble (the command code) is set to either $00 or $03 (send operating frequency / read operating frequency commands).

      I say this without having tried it in the PIC code, but going on my very quick theory of what’s happening, which is that it’s trying to turn some random other command that N1MM is sending into band data 🙂

      Rob, M0VFC

      1. m1bxf (Post author)

        I think what is actually happening is the code sees the CI-V PIN as low (0v) and goes to the Band Data Voltage code which of course there is none as it using CI-V. As there is no voltage the routine hits the ‘no band selected’ state, linear band data = $00. You are right about adding a check but I think that needs to be in the Band Voltage Routine.

        1. Barry

          Thanks for the ideas Gavin and Rob. I’ve tried your suggestions Gavin and we’re making progress. The best results are when I use 1 and 2 of your 3 ideas. 3 doesn’t seem to do much. So…with 1 and 2 implemented, here is what’s happening:
          Band changed on rig > N1MM follows and BPF follows…sometimes. When BPF doesn’t follow the rig a turn of the rig tuning dial switches it. No dropouts now!
          Band changed on N1MM > rig follows and BPF follows…sometimes. When BPF doesn’t follow N1MM a flick of the rig tuning dial switches it.
          It’s as though the BPF is sometimes ‘missing’ the CI-V band change command from both N1MM and the rig.
          73 de Barry GM3YEH.

  10. Chuck Green

    How about going the other way. Yaesu band output TO Icom Voltage so a Yaesu can control an Icom Amp.


    1. m1bxf (Post author)

      Hi Chuck,That wouldn’t be too hard at all! The only bit to get right, but it won’t be hard, is generating the 8v from a 5v PIC. There a a few easy ways to do it though.


Leave a Reply

%d bloggers like this: