Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b6aa599 authored by Alex Villacís Lasso's avatar Alex Villacís Lasso Committed by David S. Miller
Browse files

[IrDA]: Kingsun KS-959 IrDA USB driver



This dongle does not follow the usb-irda specification, so it needs its own
special driver. First, it uses control URBs for data transfer, instead of
bulk or interrupt transfers; the only interrupt endpoint exposed seems to
be a dummy to prevent the interface from being rejected. Second, it uses
obfuscation and padding at the USB traffic level, for no apparent reason
other than to make reverse engineering harder (full details on obfuscation
in comments at beginning of source). Although it is advertised as a "4 Mbps
FIR dongle", it apparently loses packets at speeds greater than 57600 bps.

On plugin, this dongle reports vendor and device IDs: 0x07d0:0x4959 .

The Windows driver that is used normally to control this dongle has a
filename of KS-959.SYS .

Signed-off-by: default avatarAlex Villacís Lasso <a_villacis@palosanto.com>
Signed-off-by: default avatarSamuel Ortiz <samuel@sortiz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4a1d7c25
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -176,6 +176,20 @@ config KSDAZZLE_DONGLE
	  To compile it as a module, choose M here: the module will be called
	  ksdazzle-sir.

config KS959_DONGLE
	tristate "KingSun KS-959 IrDA-USB dongle (EXPERIMENTAL)"
	depends on IRDA && USB && EXPERIMENTAL
	help
	  Say Y or M here if you want to build support for the KingSun KS-959
	  IrDA-USB bridge device driver.

	  This USB bridge does not conform to the IrDA-USB device class
	  specification, and therefore needs its own specific driver. This
	  dongle supports SIR speeds only (9600 through 57600 bps).

	  To compile it as a module, choose M here: the module will be called
	  ks959-sir.

comment "Old SIR device drivers"

config IRPORT_SIR
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ obj-$(CONFIG_TOIM3232_DONGLE) += toim3232-sir.o
obj-$(CONFIG_EP7211_DONGLE)	+= ep7211-sir.o
obj-$(CONFIG_KINGSUN_DONGLE)	+= kingsun-sir.o
obj-$(CONFIG_KSDAZZLE_DONGLE)	+= ksdazzle-sir.o
obj-$(CONFIG_KS959_DONGLE)    	+= ks959-sir.o

# The SIR helper module
sir-dev-objs := sir_dev.o sir_dongle.o