linux/drivers/usb/serial
Craig Hesling 0a8f200a1a USB: serial: simple: add OWON HDS200 series oscilloscope support
commit 4cc01410e1 upstream.

Add serial support for OWON HDS200 series oscilloscopes and likely
many other pieces of OWON test equipment.

OWON HDS200 series devices host two USB endpoints, designed to
facilitate bidirectional SCPI. SCPI is a predominately ASCII text
protocol for test/measurement equipment. Having a serial/tty interface
for these devices lowers the barrier to entry for anyone trying to
write programs to communicate with them.

The following shows the USB descriptor for the OWON HDS272S running
firmware V5.7.1:

Bus 001 Device 068: ID 5345:1234 Owon PDS6062T Oscilloscope
Negotiated speed: Full Speed (12Mbps)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x5345 Owon
  idProduct          0x1234 PDS6062T Oscilloscope
  bcdDevice            1.00
  iManufacturer           1 oscilloscope
  iProduct                2 oscilloscope
  iSerial                 3 oscilloscope
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0029
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         5 Physical Interface Device
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  09 21 11 01 00 01 22 5f 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              32
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              32
Device Status:     0x0000
  (Bus Powered)

OWON appears to be using the same USB Vendor and Product ID for many
of their oscilloscopes. Looking at the discussion about the USB
vendor/product ID, in the link bellow, suggests that this VID/PID is
shared with VDS, SDS, PDS, and now the HDS series oscilloscopes.
Available documentation for these devices seems to indicate that all
use a similar SCPI protocol, some with RS232 options. It is likely that
this same simple serial setup would work correctly for them all.

Link: https://usb-ids.gowdy.us/read/UD/5345/1234
Signed-off-by: Craig Hesling <craig@hesling.com>
Cc: stable@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-05-02 07:46:58 +02:00
..
aircable.c USB: serial: drop redundant transfer-buffer casts 2020-07-09 09:20:17 +02:00
ark3116.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
belkin_sa.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
belkin_sa.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
bus.c bus: Make remove callback return void 2021-07-21 11:53:42 +02:00
ch341.c Merge 6.0-rc4 into tty-next 2022-09-05 07:59:28 +02:00
console.c USB: serial: console: move mutex_unlock() before usb_serial_put() 2022-09-19 15:30:16 +02:00
cp210x.c USB: serial: cp210x: add Phoenix Contact UPS Device 2025-01-17 13:34:44 +01:00
cyberjack.c USB: serial: make usb_serial_driver::write_room return uint 2021-05-19 10:56:40 +02:00
cypress_m8.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
cypress_m8.h USB: serial: cypress_m8: enable Simply Automated UPB PIM 2020-06-23 09:56:17 +02:00
digi_acceleport.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
empeg.c docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
ezusb_convert.pl License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
f81232.c USB: serial: f81232: fix division by zero on line-speed change 2022-12-21 17:48:07 +01:00
f81534.c USB: serial: f81534: fix division by zero on line-speed change 2022-12-21 17:48:08 +01:00
ftdi_sio.c USB: serial: ftdi_sio: add support for Abacus Electrics Optical Probe 2025-05-02 07:46:58 +02:00
ftdi_sio.h USB: serial: ftdi_sio: rename channel index 2022-09-15 08:05:53 +02:00
ftdi_sio_ids.h USB: serial: ftdi_sio: add support for Abacus Electrics Optical Probe 2025-05-02 07:46:58 +02:00
garmin_gps.c USB: serial: use kmemdup instead of kmalloc + memcpy 2022-06-22 08:56:52 +02:00
generic.c USB: serial: make usb_serial_driver::chars_in_buffer return uint 2021-05-19 10:56:41 +02:00
io_16654.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
io_edgeport.c USB: serial: io_edgeport: fix use after free in debug printk 2024-11-14 13:15:18 +01:00
io_edgeport.h USB: serial: io_edgeport: drop unused definitions 2021-04-08 09:50:04 +02:00
io_ionsp.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
io_ti.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
io_ti.h USB: serial: io_ti: drop unnecessary packed attributes 2021-04-13 18:23:34 +02:00
io_usbvend.h USB: serial: io_ti: add Agilent E5805A support 2022-06-09 14:13:28 +02:00
ipaq.c USB: serial: replace symbolic permissions by octal permissions 2021-08-26 09:38:27 +02:00
ipw.c USB: serial: Remove redundant license text 2017-11-04 11:55:38 +01:00
ir-usb.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
iuu_phoenix.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
iuu_phoenix.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
Kconfig USB: serial: simple: add Nokia phone driver 2022-03-03 09:27:36 +01:00
keyspan.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
keyspan_pda.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
keyspan_usa26msg.h USB: serial: keyspan_usa: add proper SPDX lines for .h files 2019-01-18 11:09:32 +01:00
keyspan_usa28msg.h USB: serial: keyspan_usa: add proper SPDX lines for .h files 2019-01-18 11:09:32 +01:00
keyspan_usa49msg.h USB: serial: keyspan_usa: add proper SPDX lines for .h files 2019-01-18 11:09:32 +01:00
keyspan_usa67msg.h USB: serial: keyspan_usa: add proper SPDX lines for .h files 2019-01-18 11:09:32 +01:00
keyspan_usa90msg.h USB: serial: keyspan_usa: add proper SPDX lines for .h files 2019-01-18 11:09:32 +01:00
kl5kusb105.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
kl5kusb105.h USB: serial: kl5kusb105: remove KLSI device id 2018-07-11 10:11:29 +02:00
kobil_sct.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
kobil_sct.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile USB: serial: add MaxLinear/Exar USB to Serial driver 2021-01-21 10:49:37 +01:00
Makefile-keyspan_pda_fw USB: add SPDX identifiers to all remaining Makefiles 2017-11-07 15:53:48 +01:00
mct_u232.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
mct_u232.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
metro-usb.c USB: serial: drop irq-flags initialisations 2021-05-21 15:46:25 +02:00
mos7720.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
mos7840.c USB: serial: mos7840: fix crash on resume 2024-07-18 13:18:39 +02:00
mxuport.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
navman.c USB: serial: fix module-license macros 2017-11-04 11:58:00 +01:00
omninet.c USB: serial: omninet: update driver description 2021-05-25 08:59:17 +02:00
opticon.c USB: serial: use kmemdup instead of kmalloc + memcpy 2022-06-22 08:56:52 +02:00
option.c USB: serial: option: add Sierra Wireless EM9291 2025-05-02 07:46:58 +02:00
oti6858.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
oti6858.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
pl2303.c USB: serial: pl2303: add device id for Macrosilicon MS3020 2024-09-30 16:23:56 +02:00
pl2303.h USB: serial: pl2303: add device id for Macrosilicon MS3020 2024-09-30 16:23:56 +02:00
qcaux.c USB: serial: fix module-license macros 2017-11-04 11:58:00 +01:00
qcserial.c USB: serial: qcserial: add support for Sierra Wireless EM86xx 2024-11-14 13:15:18 +01:00
quatech2.c USB: serial: quatech2: fix null-ptr-deref in qt2_process_read_urb() 2025-02-01 18:30:10 +01:00
safe_serial.c USB: serial: Remove redundant license text 2017-11-04 11:55:38 +01:00
sierra.c USB: serial: fix tty-port initialized comments 2022-07-25 11:01:40 +02:00
spcp8x5.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
ssu100.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
symbolserial.c USB: serial: make remove callback return void 2021-02-09 13:13:58 +01:00
ti_usb_3410_5052.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
upd78f0730.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
usb-serial-simple.c USB: serial: simple: add OWON HDS200 series oscilloscope support 2025-05-02 07:46:58 +02:00
usb-serial.c tty: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
usb-wwan.h USB: serial: make usb_serial_driver::chars_in_buffer return uint 2021-05-19 10:56:41 +02:00
usb_debug.c USB: serial: debug: do not echo input by default 2024-08-14 13:52:56 +02:00
usb_wwan.c USB-serial updates for 5.20-rc1 2022-07-25 11:28:52 +02:00
visor.c docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
visor.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
whiteheat.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
whiteheat.h USB: serial: Use the correct style for SPDX License Identifier 2020-04-22 09:26:47 +02:00
wishbone-serial.c USB: serial: Remove redundant license text 2017-11-04 11:55:38 +01:00
xr_serial.c usb: serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
xsens_mt.c USB: serial: fix module-license macros 2017-11-04 11:58:00 +01:00