Cypress semiconductor usb to serial linux driver
Kernel Drivers
The device is supported by kernel versions 2.6.14 and newer according to the LKDDb:
Ver | Source | Config | By ID | By Class |
---|---|---|---|---|
2.6.14 — 2.6.15 | drivers/usb/input/yealink.c | CONFIG_USB CONFIG_USB_ACECAD CONFIG_USB_AIPTEK CONFIG_USB_ATI_REMOTE CONFIG_USB_HID CONFIG_USB_KBD CONFIG_USB_KBTAB CONFIG_USB_MOUSE CONFIG_USB_MTOUCH CONFIG_USB_POWERMATE CONFIG_USB_WACOM CONFIG_USB_XPAD CONFIG_USB_YEALINK | * | 030000 |
2.6.0 — 2.6.21 | drivers/usb/input/hid-core.c | CONFIG_USB CONFIG_USB_AIPTEK CONFIG_USB_HID CONFIG_USB_KBD CONFIG_USB_MOUSE CONFIG_USB_WACOM | * | 03 |
2.6.22 — 6.3 | drivers/hid/usbhid/hid-core.c | CONFIG_HID CONFIG_USB_HID CONFIG_USB_KBD CONFIG_USB_MOUSE | * | 03 |
2.6.28 — 6.3 | drivers/input/misc/cm109.c | CONFIG_INPUT CONFIG_INPUT_CM109 CONFIG_INPUT_MISC | * | 030000 |
Status (138)
HWid | Type | Vendor / Model | Probes | System | Last Status |
---|---|---|---|---|---|
56944 » | desktop | Lenovo / 30D2 SDK0J40 . | 2 | Debian 10 | works |
76DD8 » | notebook | Acer / TravelMate 5320 | 1 | ROSA R4-R8 | detected |
9F8E9 » | desktop | ASRock / 890GX Extreme3 | 1 | Ubuntu 18.04 | detected |
F7046 » | desktop | ASRock / 960GM/U3S3 FX | 1 | Ubuntu 18.04 | detected |
A3C34 » | desktop | ASRock / 990FX Extreme3 | 3 | ROSA R4-R8 | detected |
9EB06 » | desktop | ASRock / FM2A88M-HD+ | 1 | OpenMandriv . | detected |
BA1B4 » | desktop | ASRock / H310CM-DVS | 1 | Debian 11 | detected |
FF034 » | desktop | ASRock / H410M-ITX/ac | 1 | Slackware 15.0 | detected |
2BDC4 » | desktop | ASRock / H97 Pro4 | 1 | ROSA R4-R8 | detected |
892F7 » | desktop | ASRock / J4105-ITX | 1 | Ubuntu 20.04 | detected |
DB877 » | desktop | ASRock / N68C-S UCC | 1 | ROSA R9-R11 | detected |
06F6A » | desktop | ASRock / X470 Master SLI | 1 | Debian 11 | detected |
2F155 » | desktop | ASRock / X570 Taichi | 1 | Garuda Linu . | detected |
955E7 » | desktop | ASRock / X570 Taichi | 1 | Arch Rolling | detected |
D7374 » | desktop | ASRock / X670E PG Lig . | 1 | Debian 11 | detected |
AAC42 » | desktop | ASRock / Z370 Gaming K6 | 1 | openSUSE Tu . | detected |
64748 » | desktop | ASRock / Z370 Gaming K6 | 1 | openSUSE Le . | detected |
30887 » | desktop | ASRock / Z690 Pro RS | 1 | Ubuntu MATE . | detected |
58DF3 » | desktop | ASRock / Z87 Extreme3 | 1 | ROSA R9-R11 | detected |
5A751 » | desktop | ASRock / Z97E-ITX/ac | 1 | Ubuntu 20.04 | detected |
47150 » | desktop | ASUSTek / A8V-MX | 2 | Ubuntu 18.04 | detected |
C9B91 » | desktop | ASUSTek / B85-PLUS | 2 | ROSA R9-R11 | detected |
25EB7 » | desktop | ASUSTek / B85M-G | 1 | ROSA R4-R8 | detected |
37C1E » | desktop | ASUSTek / H110M-K | 1 | ROSA R9-R11 | detected |
0A8B6 » | desktop | ASUSTek / H170I-PLUS D3 | 1 | ROSA R9-R11 | detected |
ED1FA » | desktop | ASUSTek / H81M-D | 1 | ROSA R4-R8 | detected |
26ED2 » | desktop | ASUSTek / M4N78-VM | 1 | Gentoo 2.7 | detected |
D4F60 » | desktop | ASUSTek / M5A78L/USB3 | 1 | Fedora 33 | detected |
C9646 » | desktop | ASUSTek / M5A97 PRO | 1 | ROSA R4-R8 | detected |
9426D » | desktop | ASUSTek / M5A97 PRO | 1 | ROSA R4-R8 | detected |
377FC » | desktop | ASUSTek / P5B | 1 | ROSA R4-R8 | detected |
FD5EA » | desktop | ASUSTek / P5G41T-M LX | 1 | ROSA R4-R8 | detected |
ED9CF » | desktop | ASUSTek / P5K PRO | 1 | ROSA R9-R11 | detected |
6B229 » | desktop | ASUSTek / P5KPL-AM IN/ . | 1 | ROSA R4-R8 | detected |
77261 » | desktop | ASUSTek / P8H61-MX R2.0 | 1 | OpenMandriv . | detected |
77261 » | desktop | ASUSTek / P8H61-MX R2.0 | 1 | ROSA R9-R11 | detected |
18C77 » | desktop | ASUSTek / P8H77-M | 1 | ROSA R4-R8 | detected |
79801 » | desktop | ASUSTek / P8Z68-V LX | 1 | ROSA R4-R8 | detected |
FFEA5 » | desktop | ASUSTek / P8Z77-M PRO | 1 | ROSA R4-R8 | detected |
8DE5B » | desktop | ASUSTek / P8Z77-V LK | 2 | Ubuntu 20.04 | detected |
44C72 » | desktop | ASUSTek / P8Z77-V LX | 1 | ROSA R4-R8 | detected |
57918 » | main server | ASUSTek / P9D-X Series | 1 | ROSA R4-R8 | detected |
B561C » | desktop | ASUSTek / PRIME A320M-K | 1 | Arch | detected |
575CB » | desktop | ASUSTek / PRIME B350-PLUS | 1 | Ubuntu 20.04 | detected |
D5699 » | desktop | ASUSTek / PRIME B450-PLUS | 5 | Ubuntu 20.04 | detected |
I am Dolf Andringa, a geek and software engineer who loves diving into new challenges.
The last few weeks I have been busy on a solar monitoring project. I have a minimal viable product working based on an RS232 enabled inverter I have here. The first client I wanted to deploy it with has a similar inverter from the same company, just with a usb port instead of RS232. I was expecting it to be a serial over USB port that would just work as-is with a usb to serial driver, especially because it advertises itself as a Cypress USB to Serial device when you attach it to your computer. Unfortunately this wasn’t true, requiring me to reverse-engineer the USB communication for it. In the end this was easier than I thought it would be and it was a whole lot of fun. This post just shares the quest I went through.
The inverter uses a Cypress Serial to USB chip for communication with device ID 0665:5161. This is the lsusb output:
It’s the world’s smallest driver ever, once again standing on the shoulders of giants. Of course I need to now abstract it to a level where I can request specific variables from the inverter, check the integrity of the returned data, which also contains a 2-byte CRC16, etc. But at this point that is a matter of either knowing what the messages and it’s responses mean (which I do) or just repeating the messages yourself using python code and then looking at the returned data and looking at the inverter to see which number means what (a bit less reliable). One tip is to attach a device to the inverter and request all those variables frequently and logging it in a database or CSV file. Looking at the numbers over time, combined with knowledge about the inverter and how they work can get you a long way to figure this out.