From owner-freebsd-usb@freebsd.org Sat Apr 30 15:09:16 2016 Return-Path: Delivered-To: freebsd-usb@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B0063B22FBE for ; Sat, 30 Apr 2016 15:09:16 +0000 (UTC) (envelope-from karl@denninger.net) Received: from mail.denninger.net (wsip-70-169-168-7.pn.at.cox.net [70.169.168.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 63B7F14E8 for ; Sat, 30 Apr 2016 15:09:15 +0000 (UTC) (envelope-from karl@denninger.net) Received: from [192.168.1.40] (Karl-Desktop.Denninger.net [192.168.1.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.denninger.net (Postfix) with ESMTPSA id A9B05198E95 for ; Sat, 30 Apr 2016 10:09:11 -0500 (CDT) Subject: Re: Prevent attach of modem serial emulated device on USB attach? References: <08f991ca-0c97-3d29-8b56-5a4ac9f904f3@denninger.net> <5724BDEB.3060502@selasky.org> To: freebsd-usb@freebsd.org From: Karl Denninger Message-ID: <8c60b86f-de54-f80d-741d-170829dac1c8@denninger.net> Date: Sat, 30 Apr 2016 10:08:52 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <5724BDEB.3060502@selasky.org> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms060605000002090804080904" X-Content-Filtered-By: Mailman/MimeDel 2.1.22 X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Apr 2016 15:09:16 -0000 This is a cryptographically signed message in MIME format. --------------ms060605000002090804080904 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 4/30/2016 09:15, Hans Petter Selasky wrote: > On 04/30/16 16:06, Karl Denninger wrote: >> So I have managed to get access via ugen to one of the USB devices I >> want to talk to. >> >> I would like to generalize that in a library, but am confounded by a >> /second /device that comes up "looking like a modem", although it is >> not. This is convenient if you want to open and deal with it like a >> modem, but unfortunately that attachment appears to prevent me from >> successfully using it with the ugen interface at the same time, as the= >> attachment looks like it "eats" the inbound byte stream. >> >> Is there a reasonably-easy way to /prevent /FreeBSD from declaring thi= s >> device eligible to be attached as if it was a character-style modem, >> leaving it only on ugen? I have figured out how to use devd to change= >> permissions on attach, but not how to prevent it from attaching a >> generic USB device to a specific driver. >> > > Hi, > > Did you try: > > libusb_detach_kernel_driver() or > > libusb20_dev_detach_kernel_driver() > > --HPS I can probably code that into the application but what I'm looking for is something that can be stuck into devd's config (or similar) that will prevent the attachment in the first place when the device is plugged in. The issue is that I have multiple "things" that I want to talk to in this application at the same time, multiplexing them via threads and select(). One of them is only a serial driven thing, and thus I have to live with the reality of a USB serial dongle for those machines that don't have a built-in serial port. Ideally, I'd like to talk to everything that can come up on USB native via the ugen interface, which (for my purposes) is quite good since I don't mind having a second file handle open for write and, what's better, is that since I can open the control instance without blowing things up if someone else has the device open for some purpose I can make very sure I have the right device with the vendor and product Ids before I start trying to talk to i= t. Unfortunately if it's a serial port all I can do is try to probe it, and hope that my off-baud (if I get it wrong) inquiry strings don't cause the device to go insane since (and here's the really bad news) the serial-only one doesn't honor modem control lines as a means of insuring a hard reset. Unfortunately since serial USB interfaces have no consistent order, especially if plugged in after boot, I can't hard-code a config file entry either. If I can prevent this other device from attaching in the first place to a modem port via umodem then at application start I can iterate over the /dev/usb/x.y.0 nodes and, when I find the rights ones, open them up.=20 This leaves me only one possibility in the supported interfaces for a device that appears as a serial interface which will greatly reduce the risk of making that particular device insane. While I can "detach" at program start this doesn't help me with a hot-plug possibility; if I can't prevent the attachment in the first place then I may as well live with the risk of fraggling the "wrong" serial device since if someone plugs or unplugs while it's running I have to accept that risk anyway. --=20 Karl Denninger karl@denninger.net /The Market Ticker/ /[S/MIME encrypted email preferred]/ --------------ms060605000002090804080904 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 5oqWmjjQfQim+ybjlDLioYbYF14AAAAAAAA= --------------ms060605000002090804080904--