From: Greg KH <gregkh@linuxfoundation.org>
To: Alex Henrie <alexhenrie24@gmail.com>
Cc: linux-usb@vger.kernel.org, oneukum@suse.com,
Johan Hovold <johan@kernel.org>,
vojtech@suse.cz
Subject: Re: ttyACM versus ttyUSB
Date: Sun, 12 Oct 2025 18:21:27 +0200 [thread overview]
Message-ID: <2025101238-mastiff-decibel-4b4f@gregkh> (raw)
In-Reply-To: <CAMMLpeRrO_E3_c98OB9XvpiGNjhTetrw2ucFyaq5BByPWh58SA@mail.gmail.com>
On Sun, Oct 12, 2025 at 09:55:27AM -0600, Alex Henrie wrote:
> On Sun, Oct 12, 2025 at 12:07 AM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Sat, Oct 11, 2025 at 11:00:00PM -0600, Alex Henrie wrote:
> > > Dear kernel developers,
> > >
> > > I am very curious and I haven't been able to find a definitive answer
> > > anywhere: Why is the cdc-acm driver separate from the general
> > > usbserial driver? There are lots of drivers that use usbserial, each
> > > with its own unique protocol. What makes ACM so special that it needs
> > > to be separated out as /dev/ttyACM* instead of going with everything
> > > else in /dev/ttyUSB*?
> > >
> > > I can think of several possible reasons, but I'd really like to know
> > > what reasons matter to the kernel architects/maintainers.
> >
> > cdc-acm implements the USB specification for that protocol, which is
> > defined by the USB group. All of the usb-serial drivers do NOT follow
> > that protocol and use their own vendor-specific ways of talking to the
> > device.
>
> OK, so it's just a matter of policy that drivers for standard USB
> protocols name the device nodes differently than drivers for
> vendor-defined USB protocols do?
These drivers are decades old, originally written in 1999 and handled
different hardware types so they got different device nodes. Just like
many different serial drivers today have different named device nodes,
it was just following that well-known practice at the time.
And that practice continues today, when people write new serial/tty
drivers, they usually name the device nodes something new, much to many
of us arguing that maybe they shouldn't do that and they should learn
from our past history :)
Also, cdc-acm does not support as wide of a range of devices as the
usb-serial driver does, which can handle multiple-port devices and full
hardware line controls, which cdc-acm can not as it's not part of the
spec for that protocol.
There was a time that cdc-acm almost did not become a specification due
to internal arguments at USB-IF, which is why the usb-serial devices all
were using custom vendor protocols first, before cdc-acm eventually got
ratified.
Hope this helps,
greg k-h
next prev parent reply other threads:[~2025-10-12 16:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-12 5:00 ttyACM versus ttyUSB Alex Henrie
2025-10-12 6:07 ` Greg KH
2025-10-12 15:55 ` Alex Henrie
2025-10-12 16:21 ` Greg KH [this message]
2025-10-12 19:01 ` Alex Henrie
2025-10-12 19:53 ` Greg KH
2025-10-12 22:40 ` Alex Henrie
2025-10-13 9:28 ` Oliver Neukum
2025-10-13 10:47 ` Vojtech Pavlik
2025-10-13 15:42 ` Alex Henrie
2025-10-13 16:14 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2025101238-mastiff-decibel-4b4f@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=alexhenrie24@gmail.com \
--cc=johan@kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=oneukum@suse.com \
--cc=vojtech@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox