I have a 2016 DP950 Mini USB Numeric keypad compact keyboard - which is a numeric keypad with a 2 line by 16 character LCD screen and a USB connector.

What I'd like to be able to do is write messages on the screen from Linux (or even Windows or Mac at a pinch).

The keypad works fine - the device appears as a keyboard when you plug it in and sends characters as I'd expect.

But the device only appears as a USB keyboard (I was hoping it might be a USB serial device - but no) so writing to the screen seems trickier.

When it comes up - the screen says "PASSWORD:" and echoes '*' when you type a key (though it sends the keys correctly). I can see no clue as to what the password is or how to set it. The USB system claims it to be some kind of bar code reader (which it isn't).

Quick idea: I looked around the /sys hierarchy but couldn't find anything that seemed a likely candidate to write screen messages to.

Stupid idea: Can I persuade the Linux USB system to treat it as a USB serial device? This seems very unlikely and my limited knowledge of USB devices is that the device itself says what sort of driver it requires and USB keyboard drivers are a million miles from USB serial drivers.

Off track idea: Can I use CTAPI? It's not actually a card reader but it looks a bit like one. I played with around with the Chipcard CTAPI Perl scripts but this couldn't find a device to connect to (it seemed to be asking for a USB port number - what ever that is!?).

Complicated idea: Find what the internal processor is and whether I can JTAG program it? With no documentation I can find, this doesn't sound feasible.

Hardware hack: Internally the screen has a 16 way IDC connector (though no clues as to what type it is). Is there an oft used standard for talking to 16x2 LCD screens that I could hook something up to?

In case it sheds any light; here's some relevant output:

cat /proc/bus/input/devices

I: Bus=0003 Vendor=13ba Product=0018 Version=0110
N: Name="Barcode Reader "
P: Phys=usb-0000:00:1d.1-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input10
U: Uniq=
H: Handlers=kbd event9 
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

lsusb -v

Bus 003 Device 004: ID 13ba:0018 PCPlay Barcode PCP-BCG4209
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x13ba PCPlay
  idProduct          0x0018 Barcode PCP-BCG4209
  bcdDevice            0.01
  iManufacturer           0 
  iProduct                1 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              400mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      62
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2

1 Answer 1


I use for this HID device /dev/input/by-path/xxxxx-event-kbd path. This path work after device reset or device sys event changes. But, after usb interface resets 124 times - system going to bus problem. So I must reboot bus or system every day.

  • I can use this HID device to read the keypad - but what I'm looking for is a way to write to the display. Beginning to think this isn't possible on this particular model.
    – Tarim
    May 12, 2017 at 10:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .