jump to navigation

NexGen Flight Simulator: Hacking the Navigation Computer Display June 6, 2013

Posted by phoenixcomm in 16 Segment driver, Aircraft, Arduino, CP-1252/ASN-128, DIY Aircraft Cockpit, Embedded CPU's, Ethernet, Flight Simulation, Hardware, Indicator Lamps, Multi Function Display, ps2 keybaord, Semiconductors.
Tags: , , ,
1 comment so far

CP-1252This is the CP-1252/ASN-128 Navigation Computer Display.  The NCD was originally designed for Doppler  navigation, but will work in my application. I have reprinted the Analysis of this from my WordPress Blog (22Apr2011)

The Analysis:  The NCD is comprised of 4 groups: Display, Keyboard, Rotary Switches, and Thumb Wheel Switches.  The Display is comprised of 4 16-segment and 13 7-segment PinLite lamps, and two LED’s.  The keyboard is comprised of a 10 key number pad and 4 special keys, it also encodes A-Z. There are two rotary switches, and two thumbwheel switches as well. I also found a users guide, TM-1-1520-238-10 pages 3-34 through 3-46 on the web.

In it’s dim past it had been converted to a flight sim, and the only thing left whrere: the display, switches, light plate, and lots of wire. Each component, had each of their connection(s) brought out in to a header.

The Plan: As it is almost impossible to find a 16-segment display driver, but I really found two parts MAX6954 (SPI and QSPI interface), and MAX6955 (I2C interface). Both devices have the same programing model and have a I/O expander which could handle the keyboard. I have chosen to use the I2C interface. I have broken down the NCD into the following sub-units:

  • Two MAX6955AAX+ :
    • one will handle the 4 16-segment displays.
    • one will handle the 13 7-segment displays.
  • The keyboard will be interfaced via a standard Ps2 keyboard encoder that will be harvested from an old ps2 keyboard.
  • I will also need 2 bytes of I/O as well:
    • 1 byte of output to handle the two rotary switches, via two priority encoders (74LS148).
    • 1 byte for both thumbwheel switches (they are encoded to 4 bit BCD).
  • And lastly I need a USB interface to talk back to the IOP (IO Processor)

I also need a embedded microprocessor, the NCD information does not need to be super fast, as in reality it is only a dumb terminal, so an Arduino should be able to keep up with everything, if there are speed issues I will most likely switch to a TI Stellaris Launchpad module.   The NCD is either taking keystrokes from the pilot, or updating the display. In the words of the Outer Limits “There is nothing wrong with your television. Do not attempt to adjust the picture. We are now in control of the transmission. We control the horizontal and the vertical”. In the scheme of things this unit will only be another end point on the IOP which is sending the key strokes or and knob turns to the simulation processor. And in turn the NCD in effect listens to the NavGroup via the IOP for present positiontime to go etc.

 Keep Tuned in More to Come!

NexGen Flight Simulator Blog Index

Having Network problems with Linux Mint 12 April 16, 2012

Posted by phoenixcomm in DIY Aircraft Cockpit, Ethernet, Flight Simulation, Linux, Mint 12.
1 comment so far

I recently installed a fresh copy of Linux Mint 12 (32bit) on an older motherboard (Asus P4M800pro) with an VT6102 (Rine II) on the motherboard, and a 3Com nic installed in a pci slot.

Here is the gist of what happened:

  • I had a cable plugged into the 3Com nic, and no cable plugged into the Rine II.
  • I tried in vain to configure the Rine II but when you clicked on the jack icon at the top of the screen, the 3Com nic was in black and the Rine II was grayed out.
  • So I went through the Applications/System Settings/Network: I saw both nics. The 3Com showed all the info (address, mac, mask, dns, etc), and a dark configure box.
  • But when I clicked other wired network (Rine II) all it showed me that it was unplugged and the mac address. But it would not let me configure the nic.

After using the system for about a week with out the nic working, I had a bright idea, I would plug in the Rine II into a switch (not going anywhere)

BINGO! That did it and now it let me configure the port..

POSTMORTEM:  I have been a Unix developer, system administrator for over 35 years and for the past 12+ years it had been working on Sun UltraSPARC’s and a few OpenBSD transparent firewalls.  No mater if the cable was plugged in or not, it should have let me configure the nic.

Radio Subsystem – Putting Together the Linux Pc. April 6, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, Flight Simulation, Linux, Software.
add a comment

Well here I am again.. still talking about this radio system..
The Plan:   Well I have an older pc that will be the donor. It has a old ECS K7S5A pro motherboard. Yes its only 32 bits, but it has 5 PCI slots, more than enough to hold a video card, a ethernet adapter, and a few Sound Blaster PCI-16 cards. ALSA or Advanced Linux Sound Architecture should handle the multiple audio cards.  The motherboard has a built-in ethernet adapter which will connect to the Internet, and other ethernet adapter will connect to the private simulator network, so the radio subsystem can get messages from the navigation subsystem (latitude, longitude, and altitude), so I can get the slant range information of the radio that the pilot has selected. This calculation gives us: From/To, DME and is the Nav radio valid. One of the other programs running on this box is a Morse Code signal simulator, as all Nav radios use a Morse Code identifier.  This Pc is also hooked up to the Arduino which talks to the radio heads. This is accomplished by using a virtual comm port,  over a USB cable.   I plan on using Linux Mint on this box, as it is light weight.

 I will use a tool, UNetbootin, to download an image onto a USB stick for booting, it was so simple to use ‘even a cave man could have done it‘. Later when every thing is installed and running properly, I will use the Yacto Project to generate a custom distro.

Update:  ECS K7S5A pro motherboard’s BIOS could not be reset. . So I installed an ECS P4M800pro-m. It has a built in Ethernet port, VGA adapter,  and only 3 pci expansion ports, so in this box there are 2x Soundblaster PCI16 cards and a 3C905-TX Fast EtherLink 10/100 NIC.

ARINC-410 Radio Subsystem – Putting it all together March 6, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, G-4390, Gables Engineering, Linux, Software.

All right we got most of the design out of the way now. So now we just need a plan to bring all the pieces  together.

The Plan:  I figure every body needs a few radios and the guys with the heavy tin needs a lot more. So I need to be expandable, and flexible. So here are the parts of the system:

  • Linux Pc with ALSA, and multiple pci audio cards
  • arduino
  • Radio Heads that are ARINC-410 compliant
  • Master Interface Card – which holds the arduio, and does board decoding. With space for 2 74LS138 decoders
  • Radio Head interface cards one per card.
  • Audio Interface card. This card has 3mm jacks on it to hook to your pc’s sound card.
  • Your audio panel & audio sub-system mixer, etc.
  • Your cables from the Radio Head to the Interface card.
  • Your cables to chain the audio panels together.

Now what form factor are we going to use? I think that the STD Bus (28/56) will fill the bill perfectly. Not only are they still making racks for them (Vector Electronics), but it has been around for almost 30 years and has not died off yet. So there are some surplus parts around. I’m going to keep the mechanics simple. Each card will be plugged into a slot. So the board addressing will be a jumper on the board. KISS. At the other end of the card there will be a standard 40 pin idc right angle header, and a pin header for the audio.


  • The Master Interface Card and the Audio Interface Card have the same address. When you READ you are reading the switch positions. And During a WRITE you are turning on or off  the Digital Switches on the Audio Interface.
  • The Master Interface Card and the Audio Interface Card, may end up as simply the Control Card.

ARINC 410 Subsystem – Audio Routing March 4, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, G-4390, Gables Engineering, Linux, Radio Sub System, Semiconductors, Software.
add a comment

These are just some thoughts its not all here yet.

The Analysis: Well we need multiple audio sources, from things like VATSIM, NAV Morse code, co-pilot, weapons officer, and if you are flying formation a plane to plane chatter. For VATSIM, and for the inter-plane chatter we will need internet.

So, we need a computer that will have multiple audio cards, well that is going to eliminate a windows box. So I guess I need a Linux box, and we need a distribution that supports ALSA, the Advanced Linux Sound Architecture. So far so good. This box will also handle the radio ARINC-410 interface(s), the Morse Code generator, do the slant range (figures out if you are in range of the station), and drive my DME display. 

So here are all the components:

  • Radio Heads
  • ARINC-410 Interface Card
  • Audio subsystem
  • arduino
  • Linux pc with ALSA

. Since each ARINC-410 Interfaces have 3 bits for addressing the heads you can have 8 heads per interface. I could add a board select to each board so two boards gives you 16 radios..

Now you will notice that the lower arrow allows you to chain crew stations, so that means you need one audio adapter per crew station. Each of the Isolation Amplifiers use the radio heads volume control.  With all of this we still have not taken care of the mic.


  • the audio wiring between the head and the interface has to shielded.
  • I have just use 3 audio sources for an example.
  • Remember that you have to dedicate one channel for an intercom (if you have multiple crew stations).

ARINC 410 Interface subsystem, Continued March 2, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, G-4390, Gables Engineering, Linux, Radio Sub System, Relay, Semiconductors, Software.

More information and gotchas:  

Interface Specification:  Remember I said that that the ARINC-410 has 5 bits?  That means our Bus_0 through Bus_4 is the ARINC-410 A throgh E.  Now I can use Bus_5 for Read/Write (the write is Low Active). Ok that only leaves one more,  Bus_6 and I’m going to use it for a strobe. I can do that with a Schmitt Trigger.  Now I did say that was all, but hey what about a reset line?? I don’t know if I need one but we can use Bus_7, and that gives us all 8 bits in the interface.

Outputs:  Well what are our outputs?  The table below shows the standard outputs, that is what the interface has to drive.

Function Voltage Notes
Panel Lights 28v
Dial Lights 28v
DME Lamp 28v Only on NAV

We read the position of the power switch in the status register. But it would be nice to drive all those fault flags.  So how do you drive 28vdc from TTL? There are really 4 ways:

  1. High Voltage Inverter Buffer/Drivers; such as 5406, 5416, 7406, 7416. But have no voltage immunity.
  2. Relays; You still need to drive them, that is the coil.
  3. Optoisolator;  such as TIL111. My personal choice for driving HV loads, and there good for 70volts..
  4. Solid State Relays; SSR’s are robust, and can handle both large currents and high voltages.. You can find used ones on ebay.

Audio:  The Gables Radio’s have Volume IN-HI, IN-LOW, OUT-HI and OUT-LOW. This will be a headache  that I don’t want to deal with in this post. But we still need to handle the audio some how. This leaves two choices:

  1. Do what Microsoft Flight Simulator and others do. Just ignore it.
  2. Lets build an audio sub-system.  The benefits really starts to shine when you have more that one position to fill.. ie. pilot, co-pilot, navigator, weapons officer
    • If you fly VATSIM their audio is now on a channel, on the COMM head.
    • We now can simulate Morse Code signals & DME milage station on the NAV head. More later as this will dictate other changes, like outputs to drive from-to flags, etc.
    • You can chain the audio outputs.
    • You can have the same audio at the instructors console.
    • You can record the audio for play back.

Looks like we need a part 3 later..

ARINC 410 Interface subsystem February 21, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, Flight Simulation, G-4390, Gables Engineering, Linux, Radio Sub System, Semiconductors, Software.
Tags: , , , , , , , , ,

Well it’s about time I posted this interface. I’m not going to show you the whole thing because it goes on for pages and pages. Instead I’m going walk you through one channel in and one channel out.  I’m going to assume that you have a older radio head you know the ones with out the fancy LED displays.  Most (here I go assuming again) use the ARINC 410 interface which is a 2 of 5 code. I described it here in an older blog.


Gables G-3717 Dual Nav Head

Nav Pinout

The Analysis: Well the first thing we found out about ARINC 410 that the signals are low active which means they must be ‘pulled up’  if the radio head does not have pull up resistors installed. As you see from the NAV-1 table we need the following information:

Signal Name ARINC410
Whole MC TENS A, B, E
Whole MC UNITS A, B, C, D, E
DME Indicator 2
ILS Energize

The Plan and a little more Analysis:  I need to get the 4 connectors for the Gables G-4390 (five heads in one panel).   So the one connector is a PTO2A-22-55P so I need my connector guy to give me the mate to this number. It looks like I only have to worry about the fields labeled DME and that a max of 5 bits. So I’m just going to throw away the other 3 bits. There is no off the shelf  2 0f 5  to ASCII decoder, so lets not worry well do that in the driver..

I picked a Arduino  Duemilanove to run the driver and talk to the flight simulator. It only has 14 digital I/O, so could use the Mega 2560 as it has a bunch of digital I/O.

The Plan:  Ok. So we have to talk to the different heads in the plane. And you could have a bunch. So we need a protocol to talk bi-directional to the heads.. here we go.

  1. Write to the interface the head & channel you want to talk to.
  2. Read the response from the head.

Bi-directional communication must use two ports one out and one in.. but its easy to combine them and use tri-state drivers.  First I want to use the 74LS125 or 126. This is an quad package, with each of the buffers having separate controls.   So I can get away with 8 bits..  first since the max we need is to count 0 – 5 thats 3 bits. So lets use the first 3, that give us 5 more to select a max of 32 heads. So lets take a pair of 74LS138 3 to 8 decoder one of them has to be hooked up to the D0, D1, D3 to decode which of the words you want A to E. The second 138 is hooked up to the D4, D5, D6 this will give us 8 radios, really 7, because I’m going to use 0 for power status & LED controls..  Next you have to AND the Radio + Chanel to drive the 5 74LS125 Tri-State Control signals..   So if you use my signals you end up with this: EN_Chan1 + EN_Radio1 = EN_R1Ch1.

The Software:  Ok here goes I’m not going to write the code.. but here is what you need to do.

  1. Initialize the registers.. #int radio = 0; int channel = 0; odd = 0; max_radio = (you radio count + 1(status)); freq [radio][chan]; freq2[radio][chan];
  2. Start Odd / Even loop.. #for(odd = 0; odd < 2; odd++)
  3. Start Radio loop.. # for(radio = 0; channel < max_radio;  radio++)
  4. Start Channel loop.. # for(channel = 0; channel < 5; channel++)
  5. write to the control register with radio, channel.
  6. read the control register and store the results..
  7. if ( odd = 0){ freq[radio][chan] = result from reg}
  8.  if (odd = 1){ freq2[radio][chan] = result from reg}
  9. if (odd > 1) write ERROR.
  10. End of Channel Loop
  11. End of Radio Loop
  12. if(odd = 1){  now check for changes.. you want to do this with some loops..
  13. if( freq[radio][chan] != freq2[radio][chan])  its changed.. now send to the simulator..
  14. odd = 0;}
  15. End of Odd /Even loop

FINS & FYI:  You will need a bunch of the 125’s and lots of pull up resistors. Just for doing my Gables G-4390 with out any more radios lets do some math.. 5 heads * 5 channels per * 5 bits = 5 cubed or 125 buffers (32 packages)  & 125 resistors this is not including status or light drivers..  I wire wrap (power tools), but that a lot of buffers. I am working on putting the whole thing into a Xilinx part. This is a product that I am going sell at Flite-Tronics.com. This still leaves the problem with audio, or driving other indicators, like ILS flags, etc.   If you attempt this I really recommend that you check out Avnet they have the best prices for semiconductors period.

I wish to thank Gables Engineering for the pin-outs and outline dimensions.

MSI 880GM-E43 Motherboard Ethernet problems updated September 17, 2011

Posted by phoenixcomm in Ethernet, Motherboard, Windows 7 Ultimate.
Tags: , ,

Oh well back to Ethernet problems. We just had a small black out last night, I guess I blew the beaker. And would you know the same problem again. My Pc was bitching about the cable being unplugged!  Ok I went to my Network Connections and then Proprieties and then clicked on Configure, and then Advanced, and checked my Speed & Duplex settings, and set it to 10 Mb full duplex and we had connection, just a little slow, so I reset it to 100 Mb full duplex and ended up with no connection.  Ok maybe the driver took a hit. So I went to MSI and downloaded their driver again, just to make sure. Windows told me that we where up to date. Oh Joy. I slept on it.

Next Day I went to http://www.realtek.com and found out they have both 32 and 64 bit versions of their driver.  So I downloaded the 64 bit version, and in driver tab it ask if you want to update the driver. Why not. so I pointed to where I stored the new driver, and guess what? It now auto negotiates.  Life is good.

BTW MSI offered to upgrade me to a newer motherboard for free. (good guys).

Postmortem: One of these days I have to make my Sun Solaris box my desktop. I have NEVER have had driver problems with it.

MSI 880GM-E43 Motherboard Ethernet problems resolved June 29, 2011

Posted by phoenixcomm in Ethernet, Motherboard, Uncategorized.
Tags: , ,
add a comment

Well I have to say that MSI was good to their word, and they sent me a new motherboard. I waited for the weekend to install it. It was in & out (sounds like a burger joint in Los Angeles), in about 35 minutes. Then DEAD.
I found out that this motherboard likes to have its BIOS reset. Now Monday and another call to MSI, and then it seemed to work. After several attempt’s to restart System 7, and error messages, it came up. But we still had the same problem. I went to MSI site again, and downloaded the new drivers again. reloaded the drivers, and what do you know all is well with the world now. The only problem is this is 9pm Monday night. Oh well you have to give it to Murphy.

MSI 880GM-E43 Motherboard Ethernet problems June 7, 2011

Posted by phoenixcomm in Ethernet, Motherboard, Software, Windows 7 Ultimate, XP-pro.
add a comment

Well this is my main development computer, and was running XP-Pro, I got nailed with a problem that only showed up in BitComet as my pointer changed to an hourglass. My motherboard is a MSI 880GM-E43. After reloading XP my Ethernet adapter kept on saying that the Ethernet cable was unplugged! Ok so, I reloaded it again, hey maybe I messed up. Same thing. Ok out of shear desperation I loaded System 7 Ultimate.
Guss what? Same thing it said that the Ethernet cable was still unplugged. I changed the port on the switch, and 4 cables. Nothing still unplugged!
One of my buds said that I should try and change the Network Adapter’s Configuration. I changed the Speed & Duplex to 10 Mbps Full Duplex and the problem was solved. Apparently my motherboard took a dump.
After a Call to MSI they said that they would send me a advance replacement and put a hold on my Credit Card, and sending me out a new motherboard tomorrow.

%d bloggers like this: