All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rndis_host: support Hytera digital radios
@ 2022-01-01 17:22 Thomas Toye
  2022-01-02 16:20 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 2+ messages in thread
From: Thomas Toye @ 2022-01-01 17:22 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski, linux-usb, netdev, linux-kernel
  Cc: Thomas Toye

Hytera makes a range of digital (DMR) radios. These radios can be
programmed to a allow a computer to control them over Ethernet over USB,
either using NCM or RNDIS.

This commit adds support for RNDIS for Hytera radios. I tested with a
Hytera PD785 and a Hytera MD785G. When these radios are programmed to
set up a Radio to PC Network using RNDIS, an USB interface will be added
with class 2 (Communications), subclass 2 (Abstract Modem Control) and
an interface protocol of 255 ("vendor specific" - lsusb even hints "MSFT
RNDIS?").

This patch is similar to the solution of this StackOverflow user, but
that only works for the Hytera MD785:
https://stackoverflow.com/a/53550858

To use the "Radio to PC Network" functionality of Hytera DMR radios, the
radios need to be programmed correctly in CPS (Hytera's Customer
Programming Software). "Forward to PC" should be checked in "Network"
(under "General Setting" in "Conventional") and the "USB Network
Communication Protocol" should be set to RNDIS.

Signed-off-by: Thomas Toye <thomas@toye.io>
---
 drivers/net/usb/rndis_host.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 4a84f90e377c..247f58cb0f84 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -608,6 +608,11 @@ static const struct usb_device_id	products [] = {
 	USB_DEVICE_AND_INTERFACE_INFO(0x1630, 0x0042,
 				      USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
 	.driver_info = (unsigned long) &rndis_poll_status_info,
+}, {
+	/* Hytera Communications DMR radios' "Radio to PC Network" */
+	USB_VENDOR_AND_INTERFACE_INFO(0x238b,
+				      USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
+	.driver_info = (unsigned long)&rndis_info,
 }, {
 	/* RNDIS is MSFT's un-official variant of CDC ACM */
 	USB_INTERFACE_INFO(USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] rndis_host: support Hytera digital radios
  2022-01-01 17:22 [PATCH] rndis_host: support Hytera digital radios Thomas Toye
@ 2022-01-02 16:20 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-01-02 16:20 UTC (permalink / raw)
  To: Thomas Toye; +Cc: davem, kuba, linux-usb, netdev, linux-kernel

Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Sat,  1 Jan 2022 18:22:07 +0100 you wrote:
> Hytera makes a range of digital (DMR) radios. These radios can be
> programmed to a allow a computer to control them over Ethernet over USB,
> either using NCM or RNDIS.
> 
> This commit adds support for RNDIS for Hytera radios. I tested with a
> Hytera PD785 and a Hytera MD785G. When these radios are programmed to
> set up a Radio to PC Network using RNDIS, an USB interface will be added
> with class 2 (Communications), subclass 2 (Abstract Modem Control) and
> an interface protocol of 255 ("vendor specific" - lsusb even hints "MSFT
> RNDIS?").
> 
> [...]

Here is the summary with links:
  - rndis_host: support Hytera digital radios
    https://git.kernel.org/netdev/net/c/29262e1f773b

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-02 16:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-01 17:22 [PATCH] rndis_host: support Hytera digital radios Thomas Toye
2022-01-02 16:20 ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.