FT232 - Fibre Optic Interface

A minimal board to interface the FTDI USB serial converter with a pair of fibre Tx/Rx.

Similar projects worth following
A simple adapter board to interface an FTDI FT232RL to a pair of Avago/HP HFBR-x4xx series fibre-optic transmitter & receiver.

A simple PCB to interface an FTDI FT232-RL IC with an Avago (now Broadcom) HFBR-x4xx fibre optic transmitter & receiver pair. The board has some simple protections and supporting circuitry as well as Tx, Rx, and power LEDs. A USB mini-B connector was used to talk to the host machine.

Fibre Optics

The choice of Tx/Rx pair was dictated by the fibres with which I would need to interface. The HFBR-x4xx family encompasses transmitters and receivers that work on the 820nm scale. They are available with ST, SMA, FC, and SC connectors and are compatible with various multimode plastic-clad-silica (PCS) fibres, including OM1 (62.5/125um), OM2 (50/125), 100/140, and 200um. For this iteration of the build, I used the HFBR1412Z transmitter and HFBR-2412Z receiver. These are ST connector parts, with plastic connectors. This choice was again determined by the fibre I had to interface with.


As a minimum, I decided to use:

  • Overcurrent protection on the +5V input from USB
  • A TVS on the USB +5V line
  • ESD protection diodes on the USB lines

I'm hoping that this will give me a minimum level of protection against spikes, ESD, and general miss-treatment. Most of the protection was sourced from a Littelfuse app-note (which I don't seem to be able to find right now!).

For the USB Vbus protection I used a V5.5MLA0603 TVS diode, between Vbus and the shield. This is a 5V varistor diode recommended for this particular application.

For the ESD protection on the USB D+, D- lines I also turned to the Littelfuse datasheet, and selected 2x PGB10603NR low capacitance ESD protectors. Two discreet devices were selected, rather than one SOT-23, as this somewhat simplified PCB layout.

Supporting Circuitry


Python code to read serial data stream and log exception if received result deviates from previous by more than a preset value

plain - 3.07 kB - 01/06/2020 at 20:57



JPEG version of schematic

JPEG Image - 1.11 MB - 09/27/2016 at 14:30



PDF version of schematic

Adobe Portable Document Format - 66.59 kB - 09/27/2016 at 14:26


  • 1 × HFBR-2412 Fiber Optics / Fiber Optic Transmitters, Receivers and Transceivers
  • 1 × HFBR-1414 Fiber Optics / Fiber Optic Transmitters, Receivers and Transceivers
  • 1 × FT232RL Semiconductors and Integrated Circuits / Misc. Semiconductors and Integrated Circuits
  • 1 × 1734035-1 Connectors and Accessories / Telecom and Datacom (Modular) Connectors
  • 3 × HSMR-C170 LEDs and Accessories / Light Emitting Diodes (LEDs)

View all 11 components

  • Revision 2 - Coming Soon(ish)

    James01/06/2020 at 20:02 0 comments

    So, I've decided to resurrect this semi-dead project.

    The original project served it's (very) short term goal of monitoring a serial data stream, and logging any anomalies to a CSV file.  This was achieved using a laptop running a Python 3 script utilising PySerial (GitHub RepoDocumentation), logging to a CSV.  I'll post this code, when I can find it.  I have to warn though, it's not pretty!

    Since "completing" the original project I have been thinking of a number of upgrades and improvements that could be made to the hardware.  Namely, some sort of enclosure.  Much preferable to covering the whole board with a length of 50mm wide clear heatshrink as I did previously.

    The upgrades and changes I plan to make are as follows.  Not all will find their way into the final iteration:

    • Enclosure
      • Hammond 1455 series extruded aluminium
      • Likely candidate: 1455C801RD
      • To use a custom PCB as end-caps.  This allows for easy hole placement and continuity of ground/shielding
      • Possibility to mount LED(s) using a right-angle SMT header connector between main and end board
    • Switchable hardware inverters on FT232 data lines
      • Allows for correction inversion introduced by the use of the fibre-optic link
      • Switchable in hardware by the use of XNOR gates
      • Should have (option of) LED indicator
      • Inverters should be switchable per-channel, i.e. the option to invert only one, or both channels
      • Likely to be set by a micro slide/ toggle switch
    • PCB layout to accommodate both 820nm (HFBR-x4xx series) and 650nm (HFBR-x5xx series) digital transmitters and receivers
    • Possible change to USB-C connector
      • Probably unnecessary due to FTDI chip not supporting USB3
      • Much finer pitch, therefore harder to solder
      • Possibly less robust than USB Mini-B

    I also plan to look at the protection available on the USB data & power lines.  I want to ensure this is sufficient and appropriate for the application.

  • PCBs Now Assembled

    James11/13/2016 at 16:22 0 comments

    The order for the components has come in and I can now assemble a test PCB.

    All assembly was completed by hand, using a Weller WSP80 iron, with a fine point tip and Weller liquid flux. Most of the components were very easy to place, although the pins of the USB connector proved to be challenging.

    I did realise a small mistake when assembling the board, that I seem to have used a 1812 footprint for the pollyfuse (F1), whereas it should have been 1206. The soldering was not quite up to what I'd have liked it to be, as I'm a bit out-of-practice!

    I have added a few 5mm silicone feet to the bottom of the board, to keep it from flying around the desk. I intend to cover the entire PCB in 25mm clear heatshrink, but don't have any yet, so the feet will have to do for now.

    All that remains now is to power up the board, and test functionality.

  • PCBs Have Arrived

    James10/12/2016 at 08:38 0 comments

    My PCBs arrived from OSH Park yesterday afternoon. I am again impressed with the speed and turnaround time, including postage from the USA to England.

    I now need to finalise the order for all the components, then begin building.

  • Log Entry: The 1st Itteration

    James09/27/2016 at 14:15 0 comments

    A few changes have been made to the PCB to simplify the routing. The FT232 has been moved slightly toward the lower edge of the board.

    I have now uploaded the schematic (including Bill of Materials), and sent the first order for PCBs to OSH Park.

  • First Log Entry: The Beginnings

    James09/26/2016 at 19:36 0 comments

    This project is being developed as a side project to enable me to debug a piece of industrial control hardware that uses serial-over-fibre communications.

    The schematic capture and PCB design for this project has been done using DipTrace. The 3D models used for the HFBR-1414 & HFBR-2414 fibre optic transmitter and receiver are of my own creation, the rest are stock DipTrace 3.0 models. The 3D model is not intended to be a highly accurate representation, but a guide.

    The transmitter receiver pair were chosen based upon the requirement to be able to interface with OM1 (62.5/125um) or OM2 (50/125), terminated with ST type connectors. This is fairly standard for use with industrial control, the intended application of this board.

    First images of rev. 1 PCB uploaded. I intend to upload a schematic shortly.

View all 5 project logs

Enjoy this project?



L Stoskopf wrote 08/30/2023 at 18:45 point

What distance will this work reliably?  Thanks,

  Are you sure? yes | no

qtron wrote 04/19/2023 at 16:34 point

whats it for? U failed to say!

  Are you sure? yes | no

Capt. Flatus O'Flaherty ☠ wrote 02/22/2021 at 10:10 point

Hello James. I'm interested in trying out your design. Do you have gerber files available so I can send to my preferred PCB house? Or even a couple of spare PCBs? I'm in Wales, UK and build agri robots for fun.

  Are you sure? yes | no

James wrote 02/22/2021 at 21:07 point

I've dropped you a PM. If you just want Gerber's for the old V1, then they can be downloaded from the OSH park link above

  Are you sure? yes | no

Romain wrote 09/05/2017 at 20:13 point


Interesting! What maximum transfer speed can you get? Did you manage to use the D2XX driver or is it an UART VCP interface?


  Are you sure? yes | no

James wrote 09/24/2017 at 16:34 point

Sorry I've taken so long to get back to you.  I'm just using the device from a terminal app (putty or Realterm) or via Python, using PySerial.  I'm using the VCP drivers, as I have no real need for super fast comms.  That said, I would like to try using the D2xx driver/ DLL.

With PySerial It works reliably at 115,200 baud.  I've not tried it higher, as the devices with thich I've been communicating use 9,600 or 115,200.

The Tx/Rx (Broadcom/Avago HFBR-x4xx) are capable of MUCH faster speeds.  If driven correctly, can be used over 100 Mbaud.  I've had a system working reliably at 10 Meg.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates