Menu [hide]

Driver installation

backlinks print PDF
Good news: the box uses an ordinary FT232AM USB chip so the kernel supplied "ftdi_sio" driver will work.
Bad news: This driver needs simple patching so the USB system knows about the PID (Product ID) used by ELV.

Solution A - The right one

Patch the kernel module and let the driver know about the foreign PID.
cd /usr/src/linux
patch -p1 < ftdi_sio.fhz1x00.patch

Than make sure in addition to normal USB support you have CONFIG_USB_SERIAL_GENERIC and CONFIG_USB_SERIAL_FTDI_SIO enabled in kernel .config. Recompile/install the kernel, or at least this module.

Solution B - The doggy one (My preferred one)

Change the PID used by the device to something common, the kernel module knows already. This lets you go ahead without recompiling your kernel...
... but: you will need a Windows box to do that!

If you have NOT installed the original ELV software you will be asked for a driver after you plugged in the FHZ 1000 PC into this Windows box. Here it is.

Then you need to install/use the MPROG-Tool to read/write the FHZ EEPROM which contains the PID.

  • Choose "Read and Parse"
  • Change the PID to "FTDI Default" which is: VID 0403, PID 6001
  • save the image to disk
  • Erase the EEPROM
  • Reprogram it!

==> The original ELV Windows software will still work with the device!! Eventually you need to use the driver from above!
But if you need a new installation of the ELV FHZ 1000 PC Professional version later, you wont be able to activate the software with the supplied serial key anymore. The activation procedure will quit with an eeprom error.

Solution C - The quick one

At least with linux 2.6.14 I discovered an even faster method:

Just type "modprobe ftdi_sio vendor=0x0403 product=0xf06f" prior to plugging the fhz1000 into the sytem and the kernel will also recognize the device as serial port.

(for FHZ1300: "modprobe ftdi_sio vendor=0x0403 product=0xe0e8")

To automate this process the udev device mapper of Kernel 2.6 can be used. The approach was tested on Opensuse 10.3 using a FHZ 1300 PC but should also work similar on other distributions.

First of all create a new udev rule. I decided to create a new file named /etc/udev/rules.d/99-custom.rules

The file should have the following lines:

# /etc/udev/rules.d/99-custom.rules contains customer udev rules
# ELV FHZ 1000 PC
SYSFS{idProduct}=="f06f", SYSFS{idVendor}=="0403", RUN+="/sbin/modprobe -q ftdi_sio product=0xf06f vendor=0x0403"
# ELV FHZ 1300 PC
SYSFS{idProduct}=="e0e8", SYSFS{idVendor}=="0403", RUN+="/sbin/modprobe -q ftdi_sio product=0xe0e8 vendor=0x0403"

After the file is saved run the following command to load the new rules:

udevcontrol reload_rules
udevadm control --reload-rules

The result

If you have also Hotplug support enabled you will find in your syslog after you connected the FHZ1000:

kernel: Manufacturer: ELV AG
kernel: Product: ELV FHZ 1000 PC
kernel: SerialNumber: XXXXXXXX
kernel: usbserial.c: FTDI 8U232AM Compatible converter detected
kernel: usbserial.c: FTDI 8U232AM Compatible converter now attached to ttyUSB0

A "cat /proc/bus/usb/devices" will show (if usbdevfs is in your kernel) :

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0403 ProdID=f06f Rev= 2.00
S: Manufacturer=ELV AG
S: Product=ELV FHZ 1000 PC
S: SerialNumber=XXXXXXXX
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=serial
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

If this is successful you can talk to the box via /dev/ttyUSB0 using the FHZ1000 Protocol.

see also:

Created by: tostmann last modification: Monday 07 of November, 2011 [10:04:52 UTC] by arent

Online users
We have 8 online users
Google ads
RSS Wiki RSS File Galleries
[ Execution time: 0.36 secs ]   [ Memory usage: 11.99MB ]   [ 47 database queries used ]   [ GZIP Enabled ]   [ Server load: 1.19 ]