Showing posts with label pos. Show all posts
Showing posts with label pos. Show all posts

Monday, December 29, 2014

Using ftdi_sio with linux kernel 3.12 and up

A few years ago I did post some informations on how to use a Bixolon BCD-1100 or a Epson DM-D110 displays attached via USB to a linux system.

This works fine, unless you upgrade your Linux system to a kernel with version 3.12 or greater.

Since Kernel 3.12 you will see this in the logs:
# dmesg
ftdi_sio: unknown parameter 'vendor' ignored
ftdi_sio: unknown parameter 'product' ignored 



The problem is, that these two parameters where only intended to be used by developers for testing purposes. So they have now been removed from the 3.12 kernel.
But fortunaly, the linux guys did provide a official way to specify the vendor and product ID's.

We can find it in the file: /sys/bus/usb-serial/drivers/ftdi_sio/new_id.
This file contains a pair of vendor and product id, so all we need is to put those values into this file, doing something like this:

/sbin/modprobe ftdi_sio
echo "1208 0780" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id


If you wish to have it automatically configured, just update your /etc/udev/rules.d/50-dmd110.rules file as follows:

ATTR{idProduct}=="0780", ATTR{idVendor}=="1208", RUN+="/sbin/modprobe -q ftdi_sio" RUN+="/bin/sh -c 'echo 1208 0780 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'",  OWNER="root", MODE="0666"

or for the /etc/udev/rules.d/51-bixolonBCD1100.rules

ATTR{idVendor}=="1504", ATTR{idProduct}=="0011", RUN+="/sbin/modprobe -q ftdi_sio"  RUN+="/bin/sh -c 'echo 1504 0011 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'",  OWNER="root", MODE="0666"

or for the  /etc/udev/rules.d/52-star-bcd122u.rules
ATTR{idVendor}=="0519", ATTR{idProduct}=="0007", RUN+="/sbin/modprobe -q ftdi_sio"  RUN+="/bin/sh -c 'echo 0519 0007 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'",  OWNER="root", MODE="0666"

Please note that you still need to use the correct serial port settings.
The bcd122u for example runs at 19200 baud as where most others are using 9600 baud.

Tuesday, December 11, 2012

Linux and Bixolon BCD-1100

 A few years ago I posted a howto to enable a epson client display to be used with linux.


Now we wished to use bixolon client displays with out pos solution.
And as usually, they also don't know what anything beside windows is, so they don't offer drivers for linux.

The corresponding lsusb did show up this:

Bus 002 Device 004: ID 1504:0011

So the simple way to go is just use the same command as a few years back and enable the ftdi_sio module for the Bixolon displays too.
modprobe ftdi_sio vendor=0x1504 product=0x0011

Enables the bixolon display as the tty device in linux.

This did create a /dev/ttyUSB0 which we then could use to communicate with the device.
To automate the module loading on plug events, just create a new file in /etc/udev/rules.d

File: 50-udev-default.rules
ATTR{idVendor}=="1504", ATTR{idProduct}=="0011", RUN+="/sbin/modprobe -q ftdi_sio vendor=0x1504 product=0x0011"

For a solutions also working with 3.12 and newer kernels, please read on here.

Tuesday, March 9, 2010

Linux and epson DM-D110 Display

In a project we had to switch over from a Windows XP based environment to a Linux based Pos system.

All components did work just fine (almost out of the box).
The main problem was the LineDisplay used to display the information to the clients.

It is a Epson DM-D110 with USB interface.
There is no linux driver available for that device from epson :(

So the lsusb command did show this:

Bus 003 Device 003: ID 1208:0780

Ok, no driver loaded for that usb device. I did google arround, but did only find a reference in the openbravo project, about using the usbserial module for that device.
We did some tests, but where not able to get it working.

After some more googling and looking at the windows drivers we did find out, that the chipset was in fact a ftdi with customized vendor and device id.

So after some trial and error we got it working by loading the ftdi kernel module for that device.

modprobe ftdi_sio vendor=0x1208 product=0x0780

This did create a /dev/ttyUSB0 which we then could use to communicate with the device.
To automate the module loading on plug events, just create a new file in /etc/udev/rules.d

File: 50-udev-default.rules
SYSFS{idProduct}=="0780", SYSFS{idVendor}=="1208", RUN+="/sbin/modprobe -q ftdi_sio product=0x0780 vendor=0x1208"


This website has some more info on this:

http://www-user.tu-chemnitz.de/~sontag/sprog.html

For a solutions also working with 3.12 and newer kernels, please read on here.