How to use an usb to serial converter on a Mac?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
NoBE_4634256
Level 1
Level 1

Hi all,

I have bought a blood pressure meter (Microlife BP A200).

It is based on a cypress usb to serial communications.

It works fine under Windows and  Linux.

Under Linux:

- a lsusb shows: Bus 001 Device 011: ID 04b4:5500 Cypress Semiconductor Corp. HID->COM RS232 Adapter

- a device is created: /dev/ttyUSB0

Under Mac

- a lsusb shows: Bus 020 Device 020: ID 04b4:5500 Cypress Semiconductor USB to Serial

- no device is created in /dev

Under Mac I use other usb to serial converters. Mainly ftdi. All work fine.

This one doesn't.

VID/PID are correct in both cases.

I have read onCypress website that no drover is needed with Linux and Mac.

So my question is: how to make it work?

Thanks in advance

Regards

Noury

0 Likes
1 Solution

Hi all,

Finally, I have found a solution.

It seems that this device, a hid one, is not used as an ordinary serial device in MacOs.

As I prefer writing programs in Python, I've found a library named "hidapi".

I have installed it from homebrew (Mac users coming from Linux world know what it is)

I have also found a Python package named "hid".

With both I can retrieve the device and list its properties.

But for writing programs it's quiet hard.

So I've search a little more, and found a python interface to the HIDAPI library named "python-easyhid".

It is available here: A simple interface to the HIDAPI library.

This way writing programs becomes very easy.

I hope this will be useful for others, and thanks to Yatheesh.

View solution in original post

0 Likes
5 Replies
YatheeshD_36
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

Can you please confirm if you are testing the same device in Linux as well as MAC?

You can try connecting the device to windows and check the configuration of the USB-Serial Device, if its configured as UART in CDC mode?

Best Regards,

Yatheesh

0 Likes

Hi YatheeshK_36

Thanks for your answer.

Yes, I can confirm I use the same device in Linux, Windows and Mac. I have only one device.

I can also confirm it works fine with Windows and Linux.

With MacOs, I can't see the device in /dev.

With Linux, it use the cypress_m8 module, and it is used as a serial device (/dev/ttyUSB0, 115200 8N1)

I'm going to try to answer your question about Windows.

Unfortunately, I'm not comfortable with Windows.

The device appears in "user interface peripheral" (I'm translating from my french Windows, so it may different in an English Windows)

It appears as "HID vendor device"

In the "event tab", I can see:

in: configured péripheral (input.inf)

L'appareil HID\VID_04B4&PID_5500\6&19dad3d9&0&0000 a été configuré. => (which means has been configured)

Nom du pilote : input.inf

GUID de classe : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}

Date du pilote : 06/21/2006

Version du pilote : 10.0.18362.175

Fournisseur du pilote : Microsoft

Section du pilote : HID_Raw_Inst.NT

Classement du pilote : 0xFF1004

Numéro d'identification d'appareil correspondant : HID_DEVICE_UPR:FF00-FFFF

Pilotes surclassés : input.inf:HID_DEVICE:00FF1005

Appareil mis à jour : false

Appareil parent : USB\VID_04B4&PID_5500\5&1d3e9afd&0&1

======================================================================

in: started peripheral

Le périphérique HID\VID_04B4&PID_5500\6&19dad3d9&0&0000 a été démarré. => (which means started)

Nom du pilote : input.inf

GUID de classe : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}

Service :

Filtres inférieurs :

Filtres supérieurs :

======================================================================

It looks like in Windows, the it is not used as a serial device.

In Linux, it does.

I haven't seen a mention about UART in CDC mode. But maybe I haven't searched in the good place.

Regards,

Noury

0 Likes

Hello,

Please try the following command: "ls -lha /dev/tty*" before and after plugging in the USB Device to the host and check which dev node is created after the plug in by comparing the two lists.

Thanks,

Yatheesh

0 Likes

Unfortunately no device appears after plugin the device.

bigmac:rigol nb$ ls -lha /dev/tty* > before

bigmac:rigol nb$ ls -lha /dev/tty* > after

bigmac:rigol nb$ diff before after

bigmac:rigol nb$

As you can see there's no difference, unlike when using Linux where /dev/ttyUSB0 appears.

But in dmesg, the following lines appear. But I don't know how to say what they mean:

> IntelAccelerator previous NotReady transaction [ID=3640374, IOSurfaceID=2] sent. kr=0x0

> [IOUserUSBHostHIDDevice.cpp:466][0x1000e0645] Open interface: 0x1000e0640

> [IOUserUSBHostHIDDevice.cpp:606][0x1000e0645] HID descriptor interface:0 index:0 length:37 37 37

> AppleUserUSBHostHIDDevice:0x1000e0645 start

>

> [ElementContainer] Element value capacity 664

>

> [ElementContainer] Report count: 1

>

> [ElementContainer] Report ID: 0 input:64 output:64 feature:40

>

> [IOUserUSBHostHIDDevice.cpp:310][0x1000e0645] inPipe:1  inputReportSize:8 inMaxPacketSize:8 inBufferSize:8

> [IOUserUSBHostHIDDevice.cpp:335][0x1000e0645] outPipe:1  outMaxPacketSize:8

> [AppleUserUSBHostHIDDevice.cpp:103][0x1000e0645] Start ret: 0x0

> DK: AppleUserUSBHostHIDDevice-0x1000e0645::start(IOUSBHostInterface-0x1000e0640) ok

> AppleUserUSBHostHIDDevice:0x1000e0645 creating interfaces

>

> AppleUserUSBHostHIDDevice:0x1000e0645 new user client

>

> IOHIDLibUserClient:0x1000e0651 start

>

> IOHIDLibUserClient:0x1000e0651 setValid: true

>

> IOHIDLibUserClient:0x1000e0651 setStateForQueues: 0x0

>

> IOHIDLibUserClient:0x1000e0651 open

>

> AppleUserUSBHostHIDDevice:0x1000e0645 open by IOHIDLibUserClient 0x1000e0651 (0x0)

0 Likes

Hi all,

Finally, I have found a solution.

It seems that this device, a hid one, is not used as an ordinary serial device in MacOs.

As I prefer writing programs in Python, I've found a library named "hidapi".

I have installed it from homebrew (Mac users coming from Linux world know what it is)

I have also found a Python package named "hid".

With both I can retrieve the device and list its properties.

But for writing programs it's quiet hard.

So I've search a little more, and found a python interface to the HIDAPI library named "python-easyhid".

It is available here: A simple interface to the HIDAPI library.

This way writing programs becomes very easy.

I hope this will be useful for others, and thanks to Yatheesh.

0 Likes