1


I will be getting my RaspberryPi Zero tomorrow and I wanted to use it in combination with the RFID-RC522 module as some sort of USB-RFID-Tag-Reader.

This works with the RaspberryPi 3 Model B I own (over a network-socket instead of USB), but since the Zero is lacking a LAN / WLAN Interface and I didn't quite find anything useful on a Java Socket equivalent which uses USB or, more specifically, serial communcation with the Zero over its USB port with java, I thought I would ask the question here.

Thanks a bunch,
rocket_doge_

rocket_doge_
  • 111
  • 1
  • Do you want to use the Pi Zero as a USB device (connecting it to a "real" computer)? How do you connect the RC522 to the pi? – Bex Nov 21 '16 at 15:44
  • @Bex I want to use the RasPi as a USB device on e.g. my Laptop / PC and I connect the RC522 over the GPIO pins / SPI – rocket_doge_ Nov 21 '16 at 15:45

1 Answers1

1

This sounds like a very interesting and educating project!

Sadly, what you want to do is probably not as easy as you would like. USB is a complex protocol, and not as high-level as network sockets. Java does not support it very well, and while you could write a minimal custom driver and interface to that through java, it would be easier just scrapping the java part altogether.

Have a look here for how to use Pi Zero as a device: Can the Pi Zero act as an USB peripheral device?

Or add networking to your pi zero: What's the cheapest way to get network connectivity to the Pi Zero?

If you want to make a "device" out of the pi, you want to make what in linux-lingo is called a "gadget driver". (The device driver is on the host machine, talking to the device. The gadget driver is the sw on the device that the device driver talks to.)

To write a gadget driver, start out at http://www.linux-usb.org/gadget/. It seems ADA Fruit has a tutorial about how to make a serial or an ethernet gadget: https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/overview

You would want to go on, to create a custom type of gadget, with a custom device driver, that loads when your gadget is detected. From there, you could do an interrupt type USB-channel, that tells the host system when there has been an event on the gadget.

So, on the pi zero, you would build a gadget driver, and on the host you would make a device driver.

If you want to go ahead with this, you should have a look at the horse book.

Bex
  • 2,929
  • 3
  • 25
  • 34
  • 1
    If it is connected as an ethernet device (which is probably the most useful way to go), then it will have an IP address and you can connect to it using a normal network socket, etc. – goldilocks Nov 21 '16 at 16:11
  • Thank you very much ^.^ I initially thought about putting the thing into my laptop so I could login and secure passwords with an RFID tag (theres some space in the case left) but I guess I will have to scrap that idea. Just out of interest; what would I need for the custom driver / interface part? – rocket_doge_ Nov 21 '16 at 16:17
  • "what would I need for the custom driver / interface part" -> A few textbooks for starters (such as LDD3), and it is a C only realm... – goldilocks Nov 21 '16 at 17:01
  • @goldilocks LDD3 == "the horse book". ;) – Bex Nov 22 '16 at 06:35
  • 1
    Oh I thought you meant this. ;] Actually I had not heard it called the horse book before but I have a paper copy and I think I understand why. I have a paper copy of the dragon book too but there is no dragon on it :( – goldilocks Nov 22 '16 at 13:07
  • TBH I doubt there is much to be gained writing some special USB driver here vs. just using a network socket on the ethernet link. I haven't tested to see how much bandwidth is actually available, I don't know if it is arbitrary more limited that what it could provide. – goldilocks Nov 22 '16 at 13:12