Bluebird Soft Port Devices Driver

Device Drivers for MAP/950 PCI / PCI-X / PCI ExpressUploaded : 07/15/09 (see note)File Size : 2.74 MBytes

V7.0 Signed Device Drivers for Windows 7, Vista 32/64, 2000, 2003, 2003 Server, 2008, XP 32/64 supporting Axxon MAP/950, MAP/950 Pro PCI / PCI-X, PCI-Express (1, 2, 4, 8, 16 Port). Not for use with PCI Express adaptercards with PLX PEX8111 controller.

Device Drivers for MAP/950 PCI / PCI-X / PCI ExpressUploaded : 04/10/07 (see note)File Size : 1.15 MBytes

V6.5.1.5 Signed Device Drivers for Vista, 2000, 2003, 2003 Server, XP, XP Pro,XP64 supporting Axxon MAP/950, MAP/950 Pro PCI / PCI-X, PCI-Express (1, 2, 4, 8, 16 Port). 32/64 Bit OS use.

Recommended Default Driver

Uploaded : 01/28/07 (see note)File Size : 528 KBytes

V6.5.0.4 Device Drivers for Win 9x, ME, 2000, 2003, 2003 Server, NT4, NT Server, XP, XP Pro supporting Axxon MAP/950, MAP/950 Pro PCI / PCI-X, PCI-Express (1, 2, 4, 8, 16 Port). 32 Bit OS use. For use with PCI Express adaptercards with PLX PEX8111 controller.

INF file for IC0560KB Uploaded : 08/09/03
INF file to map Microsoft Serial Device Driver to Axxon IC0560KB Serial Card
Documentation for above INF fileUploaded : 08/09/03
Documentation (PDF format) file to map Microsoft Serial Device Driver to Axxon IC0560KB Serial Card
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 01/26/06 (see note)File Size : 352 KBytes
V5.12 Device Drivers for Win 9x, ME, 2000, 2000 Pro, 2003, NT, NT Server, XP, XP Pro supporting Axxon MAP/950, MAP/950 Pro PCI / PCI-X, PCI-Express (1, 2, 4, 8, 16 Port). Contact us for XP64 / Win2003-64 bit driverset.
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 11/11/04 (see note)File Size : 343 KBytes
V4.09 WHQL signed Device Drivers for Win 95, 98, ME, 2000, 2000 Pro, 2003, NT, NT Server, XP, XP Pro supporting Axxon MAP/950, MAP/950 Pro PCI / PCI-X (1, 2, 4, 8, 16 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 04/12/03File Size : 343 KBytes
V4.06 Device Drivers for Win 95, 98, ME, 2000, 2000 Pro, 2003, NT, NT Server, XP, XP Pro supporting Axxon MAP/950, MAP/950 Pro PCI (2, 4, 8 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 09/03/02File Size : 352 KBytes
V4.04 Device Drivers for Win 95, 98, ME, 2000, 2000 Pro, NT, NT Server, XP, XP Pro supporting Axxon MAP/950, MAP/950 Pro PCI (2, 4, 8 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 04/22/02File Size : 330 KBytes
V4.00 Device Drivers for Win 95, 98, ME, 2000, 2000 Pro, NT, NT Server, XP, XP Pro supporting Axxon MAP/950, MAP/950 Pro PCI (2, 4, 8 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 11/25/01File Size : 324 KBytes
V3.92 Device Drivers for Win 95, 98, ME, 2000, 2000 Pro, NT, NT Server, XP, XP Pro supporting Axxon MAP/950 PCI (2, 4, 8 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 07/02/01File Size : 297 KBytes
V3.8 Device Drivers for Win 95, 98, ME, 2000, NT supporting Axxon MAP/950 PCI (2, 4, 8 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 02/01/02File Size : 303 KBytes
V3.7 Device Drivers for Win 95, 98, 2000, NT supporting Axxon MAP/950 PCI (2, 4, 8 Port) and ISA I/O Cards
Device Drivers for MAP/950 PCI / ISA Bus Flex-ClockUploaded : 07/18/00File Size : 281 KBytes
V3.5 Device Drivers for Win 95, 98, 2000, NT supporting Axxon MAP/950 PCI (2, 4, 8 Port) and ISA I/O Cards

Features of the Active USB-COM Port Driver 1.Features: The USB device can be removed from the PC USB Port while the application opens the Serial Port with which the USB; device is connected. (It will be kept opening when the USB device is plugged into the USB Port again.) The Virtual Serial Port is always existed on PC even if USB device is. List of all WD firmware and software available for download. From the list of devices, select USB Audio Device. Make sure that the 'Location' field below the list shows the name of the Korg USB MIDI Device, and click the Properties button. The 'USB Audio Device Properties' dialog box will appear. Click the Driver tab, and then click the Update Driver button. VAIOPC How to charge USB device when it's shutted down (powered off), paused or on sleep mode VAIOPC How to connect with IEEE 802.11ac VAIOPC How to connect with IEEE 802.11n. Right click on your Blue Mic driver. Select “Browse my computer for driver software”. Select “Let me pick from a list of device drivers on my computer”. Select USB Audio Device, then hit Next.

DUALPORT.EXEUploaded : 07/02/01File Size : 359 KBytes
Self extracting EXE zip to support Axxon Dualport ISA I/O Card
MODEL42.EXEUploaded : 08/13/99File Size : 262,705 Bytes
Soft I/O Model 42 Files for Quad 16550 Serial Ports + 2 Parallel Port I/O Card. Self extracting ZIP executable containing the latest Soft I/O Model 42 files.
SOFTMENU.EXEUploaded : 08/13/99File Size : 94,530 Bytes
Soft I/O Softport configuration software for Single 16550 Serial Port I/O Card.
SPP10B.EXEUploaded : 08/13/99File Size : 72,605 Bytes
Soft I/O Softport Files for Single 16550 / 16650 / 16750 Serial Port I/O Card. Self extracting ZIP executable containing the latest Soft I/O Softport files. Also download SPDOSUTL.EXE PnP utility.
SPDOSUTL.EXEUploaded : 08/13/99File Size : 50,012 Bytes
Soft I/O Softport series PnP activation utility for single 16550 / 16650 / 16750 Serial Port I/O Card. Self extracting ZIP executable.
QP14BETA.EXE Uploaded : 08/13/99File Size : 183,096 Bytes
Soft I/O Quadport 16550 Files for Quad 16550 Serial Ports I/O Card. Self extracting ZIP executable containing the latest Soft I/O Model Quadport 16550 Files.
SPFILES.EXE Uploaded : 08/13/99File Size : 106,772 Bytes
Soft I/O Softport+ 16x50 Files for Single 16550 / 16650 / 16750 Serial Port I/O Card. Self extracting ZIPPED file containing the current Soft I/O Softport+ 16x50 Files.
SPFLEX.EXE Uploaded : 08/13/99File Size : 105,962 Bytes
Soft I/O Softport+ 16x50 File with Flex-Clock for Single 16C950 Serial Port I/O Card. For use with 128 Byte buffer 16C950 UART.
SUPRAPNP.EXE Uploaded : 08/13/99File Size : 50,257 Bytes
Axxon activation utility for use with the SupraExpress PnP Internal Modems and DOS. ICU is not necessary. Self extracting executable containing built in PnP code. This program is shareware. NEW CORRECTED FILE SIZE. Version : BETA 1.2
WINMODEM.EXE Uploaded : 08/13/99File Size : 40,388 Bytes
Axxon activation utility for use with the USR Winmodem PnP Internal Modems. ICU / PnP is not necessary. Self extracting executable containing built in PnP code. This program is shareware. Version : BETA 1.0

Bluebird Soft Port Devices Drivers

USRUTIL.EXE Uploaded : 08/13/99File Size : 49,174 Bytes
Axxon activation utility for use with the USR Sportster PnP Internal Modems. ICU / PnP is not necessary. Self extracting executable containing built in PnP code. This program is shareware. Version : BETA 1.0
Document for Windows NT and interrupt sharing using the Axxon Quadport
Document for using Axxon Quadport with SCO Unix OS
For Motorola BitSURFR PRO EZ Customers (c) Motorola Uploaded : 08/13/99
For Motorola BitSURFR PRO CustomersUploaded : 08/13/99
Driver
For 3COM Impact IQ ISDN customersUploaded : 08/13/99
Microsoft ISOLATE program for PnP ISA (Legacy) Products
Logitech PnP Utility for the Logitech Plug & Play Serial Bus Mouse board by Axxon (LOGITECH ? ; display help)

If you are a Python programmer, and need a simple USB interface for some hardware, read on…

FTDI are well known for their USB-to-serial chips, but the later models (such as FT2232C and FT232H) have various other capabilities; when combined with Python, you get a simple yet powerful method of controlling & monitoring a wide variety of hardware devices.

Bluebird Soft Port Devices Driver Device

Hardware

Various FTDI-equipped modules and cables are available.

A few points to bear in mind:

Port
  • The module may need to have some of its pins linked together, otherwise it won’t power up.
  • If the module has a 5 Volt output pin, take care when connecting it up; if mis-connected, a sizeable current may flow, causing significant damage.
  • Each FTDI device has a unique set of capabilities; check the datasheet to make sure the part has the facilities you need.

Device driver

As standard, when an FTDI device is plugged into a Windows PC, the operating system loads the default Virtual Com Port driver, that can only handle asynchronous serial (RS232-type) protocols. However, we want to be a bit more adventurous, so need to substitute the ‘d2xx’ driver, available from the FTDI drivers page. A quick way to check which driver is active is to look at the Device Manager; if the FTDI part appears as a COM port, it is asynchronous-only.

Use ‘pip’ to install a Python library that will access the d2xx driver; there are several available (such as pyftdi, pylibftdi) but the only one that worked seamlessly with Python 2.7 and 3.x on my systems was the simplest: ftd2xx, which is just a CTYPES wrapper round the d2xx API

A quick check to see if all is well (Python 2.7 or 3.x):

This should print some dictionary entries for the device, e.g.

If this fails, it is usually because the device is still using the VCP driver, or the Python library can’t find the necessary FTDI files (ftd2xx.lib, and ftd2xx.dll or ftd2xx64.dll); they need to be somewhere on the executable PATH.

Linux drivers are discussed in the next post.

Pinout

Before sending any data to the device, we need to establish which pins does what, as all pin functions are pre-assigned. Each chip has 1 or more ‘channels’, i.e. protocol engines, so a 2-channel device can drive 2 separate protocol streams, though there may be a limitation on the protocols a channel can handle. Each channel is assigned to one or more ports, which are usually 8-bit, but may have as many as 10 or as few as 4 bits. The first port of the first channel is identified as ADBUS; if that channel has a second port, it would be ACBUS. The first port of the second channel (if present) is BDBUS, the second port of that channel would be BCBUS.

The serial I/O functions are generally constrained to the lower few bits of the first port, the rest of the lines act as general status or handshake I/O. For example, the 2-channel FT2232C device channel A has pins ADBUS 0 – 7 and ACBUS 0 – 3:

The GPIOL and GPIOH prefixes refer to the low & high byte output commands that we’ll encounter later when using MPSSE mode for synchronous protocols; also note that channel B is unusable in that mode.

Bluebird Soft Port Devices Driver

Devices

A possible source of confusion is that pins 1 and 2 in MPSSE mode are identified as TDI/DO and TDO/DI, implying that they can act as inputs or outputs. This is incorrect: in MPSSE mode, pin 1 is normally an output, and pin 2 is an input. The reason for the TDI and TDO labels is that they refer to the JTAG protocol, which is defined from the point of view of the device being controlled, not the controller – so the DO and DI labels apply in normal usage.

Also note that the device has a tendency to keep its previous settings, even after a reset. For this reason, all programs using the ftd2xx library normally start by clearing everything in the device to zero, just in case a preceding program has left some settings active. For simplicity, the code given below ignores this requirement, and assumes the device has been re-plugged just before the code was run.

Bitbang mode: toggling an I/O pin

‘bitbashing’ which FTDI call ‘bitbanging’, refers to driving the I/O pins directly, rather than using an I/O protocol embedded in the device.

The FTDI device powers up in ‘reset mode’ and must be set to bitbang mode using the setBitmode function. One advantage of using the Python ftd2xx library is that the function arguments are as documented in the FTDI ‘D2XX Programmers Guide’:

Having set our chosen pin as an output, and enabled bitbang mode, writing a string to the device handle will set its state. The ‘write’ functions returns the number of characters written, which is 1 in this case. If your application involves sending out a succession of O/P pulses, you’ll want to know how fast the operation is; sending the following commands:

results in a positive pulse somewhere between 500 microseconds and 2 milliseconds wide. This will be too variable and too slow for many applications, so an alternative is to write a string containing multiple data values, e.g.

This results in a pulse 50 nanoseconds wide, which is probably too narrow for most applications, however in theory you can just duplicate a command to stretch it out, for example to generate a pulse of 200 nanoseconds:

Bluebird soft port devices driver ed

This approach is somewhat inefficient, and works fine on Python 2.7, but not on Python 3.x; if you connect an oscilloscope to the output, you’ll see a couple of cycles of 10 MHz square-wave, instead of a single broad pulse. Using a USB analyser to monitor the data, it is apparent that the code is sending the bytes 01 00 01 00 01 instead of 01 01 01 01 00; the length is correct, but the data values are wrong, because of the different ways Python 2.7 and 3.x store their strings.

Byte values in Python 2.7 and 3.x

Bluebird Soft Port Devices Driver Ed

The default string type can’t be used for byte data in 3.x, as the characters are 16-bit Unicode values, not bytes. There are various ways round the problem, the simplest is to force the string type to binary:

This is fine for preformatted strings, but gets rather messy if the data is being computed on-the-fly. There are plenty of alternative suggestions on the Internet, but many don’t work in special cases, such as bit 7 being set. The ‘bytearray’ type would be useful, except that it is rejected as an unknown type by the ftd2xx library. The ‘bytes’ datatype is good on v3, but works very differently on v2.7, so for my development I reluctantly decided to store all outgoing data as lists of integers, with a version-dependant conversion function on writing, e.g.

Slowing down output transitions

Sending multiple output commands to slow down the output transitions is quite inefficient, and unworkable for really long pulses. A better alternative is to program the baud rate generator (the same generator as used for serial communications), which synchronises the transitions, e.g.

The FTDI Application Note states that the output is clocked at 16 times the baud rate, so 9600 baud should result in a timing of 6.51 microseconds per bit. However, on an FT2232H module the time was measured as 20.825 microseconds, so that logic seemingly doesn’t apply to all modules.

Reading input pins

Finally we get to read some data in:

The length of 1 returns an 8-bit value corresponding to the I/O pin states; as before, the returned type depends on the Python version, so I convert it to a list of integers:

Unused inputs float high, and the last output command drove the ADBUS0 output low, so the value printed is 254 in a list, [254].

You can implement quite complex protocols using simple I/ O commands; write-cycles can be chained to output complex sequences, but there is quite a speed-penalty every time a read-cycle has to be interleaved. In recognition of this, many FTDI chips have a more complex capability, which they call MPSSE (Multi-Protocol Synchronous Serial Engine); that’ll be the subject of a later blog post…

See the next post to run the code on Linux…

Copyright (c) Jeremy P Bentham 2018. Please credit this blog if you are using the information or software in it.