Kernel Newbies archive on lore.kernel.org
 help / color / Atom feed
* USB driver
@ 2020-04-25  5:44 Sohaib Mhmd
  2020-04-25  7:00 ` Greg KH
  2020-04-29  0:25 ` Aruna Hewapathirane
  0 siblings, 2 replies; 5+ messages in thread
From: Sohaib Mhmd @ 2020-04-25  5:44 UTC (permalink / raw)
  To: kernelnewbies

[-- Attachment #1.1: Type: text/plain, Size: 1233 bytes --]

Hi everyone, I made a very simple USB driver
<https://gist.github.com/smalinux/3d6a5b000a32b97250b2d0c86b90711b>,
but the problem is that the probe and disconnect functions never was called.
I tried to google for this problem but unfortunately:
1- I don't use usb-storage <https://stackoverflow.com/a/31071943/5688267>,
it's a keyboard! (but anyway the same problem exists with any usb-based
device) and all driver on my machine are  bluetooth related drive (i
think!) (as you see from lsmod | grep usb)
2- I tried to rmmod usbhid <https://stackoverflow.com/a/4204608/5688267>
but I get error: ERROR: Module usbhid is builtin.
I tried to search for "usbhid" in .config file to remove it but I didn't
find anything.

What should I do?
thanks, smalinux

[root@hp kernel_mod]# lsmod | grep usb
sma_usb                16384  0
btusb                  57344  0
btrtl                  24576  1 btusb
btbcm                  20480  1 btusb
btintel                32768  1 btusb
bluetooth             634880  34 btrtl,btintel,btbcm,bnep,ath3k,btusb,rfcomm

I use  :
- Linux hp 5.6.3 #2 SMP Fri Apr 10 06:45:27 EET 2020 x86_64 x86_64 x86_64
GNU/Linux
- Linux buildroot 5.4.3-gf7688b48a-dirty #1 SMP Thu Jan 1 00:00:00 UTC 1970
x86_64 GNU/Linux

[-- Attachment #1.2: Type: text/html, Size: 1460 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* Re: USB driver
  2020-04-25  5:44 USB driver Sohaib Mhmd
@ 2020-04-25  7:00 ` Greg KH
  2020-04-25  7:45   ` Sohaib Mhmd
  2020-04-29  0:25 ` Aruna Hewapathirane
  1 sibling, 1 reply; 5+ messages in thread
From: Greg KH @ 2020-04-25  7:00 UTC (permalink / raw)
  To: Sohaib Mhmd; +Cc: kernelnewbies

On Sat, Apr 25, 2020 at 07:44:12AM +0200, Sohaib Mhmd wrote:
> Hi everyone, I made a very simple USB driver
> <https://gist.github.com/smalinux/3d6a5b000a32b97250b2d0c86b90711b>,
> but the problem is that the probe and disconnect functions never was called.

What USB device is currently attached to the ids that your driver wants
to bind to?  Unload/unbind that and then your driver should work.

greg k-h

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* Re: USB driver
  2020-04-25  7:00 ` Greg KH
@ 2020-04-25  7:45   ` Sohaib Mhmd
  2020-04-25  8:05     ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Sohaib Mhmd @ 2020-04-25  7:45 UTC (permalink / raw)
  To: Greg KH; +Cc: kernelnewbies

[-- Attachment #1.1: Type: text/plain, Size: 1151 bytes --]

Sorry, do you mean vendor & product id
<https://gist.github.com/smalinux/3d6a5b000a32b97250b2d0c86b90711b#file-sma_usb-c-L8>?
Do you mean to unload/unbind for any particular one?

[root@hp kernel_mod]# lsusb
Bus 003 Device 023: ID 045e:0800 Microsoft Corp. Microsoft® Nano
Transceiver v2.0

[root@hp kernel_mod]# lsusb -t
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 3: Dev 23, If 0, Class=Human Interface Device, Driver=usbhid,
12M
    |__ Port 3: Dev 23, If 1, Class=Human Interface Device, Driver=usbhid,
12M
    |__ Port 3: Dev 23, If 2, Class=Human Interface Device, Driver=usbhid,
12M

On Sat, Apr 25, 2020 at 9:01 AM Greg KH <greg@kroah.com> wrote:

> On Sat, Apr 25, 2020 at 07:44:12AM +0200, Sohaib Mhmd wrote:
> > Hi everyone, I made a very simple USB driver
> > <https://gist.github.com/smalinux/3d6a5b000a32b97250b2d0c86b90711b>,
> > but the problem is that the probe and disconnect functions never was
> called.
>
> What USB device is currently attached to the ids that your driver wants
> to bind to?  Unload/unbind that and then your driver should work.
>
> greg k-h
>

[-- Attachment #1.2: Type: text/html, Size: 1603 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* Re: USB driver
  2020-04-25  7:45   ` Sohaib Mhmd
@ 2020-04-25  8:05     ` Greg KH
  0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2020-04-25  8:05 UTC (permalink / raw)
  To: Sohaib Mhmd; +Cc: kernelnewbies


A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

http://daringfireball.net/2007/07/on_top

On Sat, Apr 25, 2020 at 09:45:44AM +0200, Sohaib Mhmd wrote:
> Sorry, do you mean vendor & product id
> <https://gist.github.com/smalinux/3d6a5b000a32b97250b2d0c86b90711b#file-sma_usb-c-L8>?

I have no idea, what ever vendor/device id that you put in your driver,
it needs to not have a driver attached to it for your driver to be able
to be called.

> Do you mean to unload/unbind for any particular one?

Again, the driver that is attached to the device your want your driver
to bind to is what you need to watch for.

good luck!

greg k-h

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* Re: USB driver
  2020-04-25  5:44 USB driver Sohaib Mhmd
  2020-04-25  7:00 ` Greg KH
@ 2020-04-29  0:25 ` Aruna Hewapathirane
  1 sibling, 0 replies; 5+ messages in thread
From: Aruna Hewapathirane @ 2020-04-29  0:25 UTC (permalink / raw)
  To: Sohaib Mhmd; +Cc: kernelnewbies

[-- Attachment #1.1: Type: text/plain, Size: 3020 bytes --]

>> On Sat, Apr 25, 2020 at 1:46 AM Sohaib Mhmd <xunilams@gmail.com> wrote:
>> Hi everyone, I made a very simple USB driver
<https://gist.github.com/smalinux/3d6a5b000a32b97250b2d0c86b90711b>,
>> but the problem is that the probe and disconnect functions never was
called.
>> I tried to google for this problem but unfortunately:
>> 1- I don't use usb-storage <https://stackoverflow.com/a/31071943/5688267>,
it's a keyboard! (but anyway the same problem exists with any usb-based
device) and all driver on my machine are  bluetooth related drive (i
think!) (as you see from lsmod | grep usb)
>> 2- I tried to rmmod usbhid <https://stackoverflow.com/a/4204608/5688267>
but I get error: ERROR: Module usbhid is builtin.
>> I tried to search for "usbhid" in .config file to remove it but I didn't
find anything.

>> What should I do?
>> thanks, smalinux

Hello Sohaib,

Looking at the very last line of your dmesg output :
[ 4545.614471] hid-generic 0003:045E:0800.000C: input,hiddev96,hidraw2: USB
HID v1.11 Device [Microsoft Microsoft® Nano Transceiver v2.0] on
usb-0000:00:14.0-3/input2

The reason your probe and disconnect functions are never called is because
the hid-generic driver has claimed your device. This is the default
behavior.
Since usbhid is builtin you are unable to unload it using rmmod. But you
can unbind it. The steps are below:

1 - sudo modprobe <your_kernel_module>
2 - unbind hid-generic                  ( from a root terminal )
3 - bind <your_kernel_module>    ( from a root terminal )
4 - check dmesg                         ( should show your probe has been
called )
5 - unbind <your_kernel_module> ( from a root terminal )
6 - check dmesg                         ( should show your disconnect has
been called )

Clear the log buffer with dmesg -c then run dmesg -w.

Now find your bus id. Your bus id is 3-3:1.2 from your second last dmesg
output.
[ 4545.613190] input: Microsoft Microsoft® Nano Transceiver v2.0 System
Control as
/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.2/0003:045E:0800.000C/input/input49

To unbind from hid-generic from a root shell/terminal:
echo "3-3:1.2" >  /sys/bus/usb/drivers/usbhid/unbind

Now to bind to your driver from a root shell:
echo "3-3:1.2" >  /sys/bus/usb/drivers/'my first usb driver'/bind    // you
need the single quotes because of the spaces in your driver name

You should see dmesg telling you the probe function has been called now.

To unbind your driver from a root shell:
echo "3-3:1.2" >  /sys/bus/usb/drivers/'my first usb driver'/unbind    //
you need the single quotes because of the spaces in your driver name

and now dmesg should show you the disconnect function has been called.

If you pull out your device and plug it back in usbhid will be triggered.
To stop that you can from a root terminal:
echo '0' > /sys/bus/hid/drivers_autoprobe

Good luck - Aruna ( If you have the kernel source why not re-compile ? Look
for CONFIG_USB_HID in Make menuconfig )

[-- Attachment #1.2: Type: text/html, Size: 4006 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-25  5:44 USB driver Sohaib Mhmd
2020-04-25  7:00 ` Greg KH
2020-04-25  7:45   ` Sohaib Mhmd
2020-04-25  8:05     ` Greg KH
2020-04-29  0:25 ` Aruna Hewapathirane

Kernel Newbies archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/kernelnewbies/0 kernelnewbies/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 kernelnewbies kernelnewbies/ https://lore.kernel.org/kernelnewbies \
		kernelnewbies@kernelnewbies.org
	public-inbox-index kernelnewbies

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernelnewbies.kernelnewbies


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git