NFC Reader : ACR122U-A9 not holding tags - tags

The SDK provided along with NFC reader does not work and we are not able to write data / tag using the Tools available with SDK. The main issue is that the data written using another tool does not remain in the device for permanently. When tag is scanned using Android device, reader gets clear and we have to to write data again.
I have checked and tried instructions from https://github.com/fkooman/nfcip-java/blob/master/nfcip-java/doc/ACR122_PN53x.txt but it does not work.
So, we need help to understand what command is needed to keep data(tag) in Reader even if it has been unplugged from the computer. The reader needs to be working in emulation mode and should provide tags.

I know this is old but ranked in google so...
The ACR122U does not have any memory so it cannot save any state. You need to use it as you mentioned - writing to the device on each use.
Hope it helps someone.

First of all, the ACR122U was mainly designed as a contactless smartcard reader and not as a card emulator. However, it is possible to do host-based card emulation (HCE) with this device (see How to card emulate with ACR122U-A9). But note that there are issues with some versions of the ACR122U (e.g., see The PN532 configured as target has been released by its initiator).
Nevertheless, all this is host-based card emulation. So the ACR122U only acts as the contactless front-end for emulating a tag (or contactless smartcard). It's the host (the computer) to which the ACR122U is connected to that performs the actual emulation.
Thus, the ACR122U is not a stand-alone device that you could program to act as a tag. You always need an application running on the computer that is connected to the ACR122U (via USB) to perform the actual emulation.

Related

Where can I find the android open accessory API / libraries / firmware examples?

In the docs regarding custom accessories, there is a link to what it claims is the firmware source code but this link only points back to the top page for the Android Peripherals and Accessories (no source code). All the pages under "Custom Accessories" give vague instructions on how to connect but no API, libraries or examples. For example, under the Determine accessory mode support section, it claims:
During the initial connection, the accessory should check the version, vendor ID, and product ID of the connected device's USB device descriptor.
How do I initialize a connection and what methods or what libraries would I call to get the version and other info?
No amount of googling has enabled me to find the source code, libraries or examples to anything related to this "ADK" other than a few outdated Arduino pages that also point to bad links. The closest SO question I've found is here and answers also contain broken or piped links.
Is this project dead or something? What is the standard way of communicating with IO via Android these days?
Just following up here as I found what I was after, though not terribly pleased with the result.
The demo code linked in the docs points to an "adk" which appears to be a demo of the Android Open Accessory protocol developed for use on the Arduino ADK board which was intended to interact with Android. The source code can be found here:
https://android.googlesource.com/device/google/accessory/
though it is terribly out of date. You'll have a terrible time trying to get that to compile with modern gradle.
There are a couple of more active communities working with USB and Android:
This one being great, but only for Host Mode (not accessory mode):
https://github.com/mik3y/usb-serial-for-android
There was another slightly less outdated example of how to implement the AOA between two android phones, which I refactored and got working using modern gradle build tools:
https://github.com/topherbuckley/USB-accessory-sample
After seeing how abandoned the project was for so long, I instead focused my efforts on using Android in Host Mode only, but implementing USB Power Delivery on any hardware such that I can use the Android phone in Host Mode and swap the Power Role via USB-PD after initializing the connection. In this way I can avoid the AOA and still get the same end result using modern software/hardware/firmware.

Implementation of USB device driver on my own OS based in Linux

I’m on process of developing my own Operating System based in Linux.
This week we’re aiming to implement very simple USB device driver , which is quite hard to get basic algorithm .
However commonly it’s hard to find out some sources aside from commercial linux system.
And I want to get some advice about this .
Plus, I do all these stuffs on Ubuntu , using QEMU emulator.
I’ve done simple file system and hard disk device driver so far.
Help me out how to implement USB device driver with very sime ideas.
Thank you !! :)
Implementing USB is quite the task. First you must have a working PCI(e) enumerator or other form of finding the USB controller. You then must find out which of the four most common controller types it happens to be. Each controller type is completely different from the previous and must contain its own driver. You also need a standard USB interface that is independent of the controller type.
Taking on the USB is quite the task, but in my opinion a very interesting and enjoyable task. Enjoyable enough, that I even wrote a book about how to do it. It explains how to find the controller(s) via the PCI(e) bus, how to setup this bus, how to detect the type of USB controller--UHCI, OHCI, EHCI, or xHCI--and how to send and receive data packets to/from attached devices. This book was written exactly for the purpose of those of us creating our own operating systems and adding USB support to them. The fact that you are basing your OS on Linux should not matter since the book does not rely upon any existing OS to accomplish this task, other than the example programs relying on memory allocation, which is easily modified for your developing platform.
Might I say that if you do take on this task, it will be a difficult task, but it will be an enjoyable task. In my opinion, the USB is the most enjoyable part of this hobby of ours.

How can I know the operating system of a device

If I know the device's model or vendor. Is there any direct way by which I can know the operating system of this device (e.g through the device driver or something like that? ). For example, I will quote an answer for a previous question I asked in: What is the difference between the firmware and the operating system?
Someone have said:
Hardware vendors commonly use a derivative of linux (e.g. Cisco IOS)
How can I know this. I know a name for one cisco device but I do not have the device and I need to check what is its operating system (even if it is widely known that it is Linux, I need to check this myself). How can I get this piece of information ? I checked the companies site and google, and I can not find any answer.
If the terms of the GNU Public License are complied with, it should be reasonably clear if a device is using any GPL code, including Linux, moreover the source code should be available too.
If the device uses an OS that is not open source, then even if the information were available to you, it is unlikely to be particularly useful except perhaps in respect to applying manufacturer's firmware updates.
Linux is by no means that common in embedded systems in general. It is commonly used in certain types of device, such as routers, STB's and NAS's. Often these devices have a web-server interface through which version information is usually available, but there is no common method of accessing this information, you'd have to access the particular URL for the device and parse the HTML.
You need a serial cable to hack into the device or read the binary from the flash and examine the hexdump. I have a STB in my home. The provider doesn't reveal the OS. There are competitors out there who need such information to take you down.

Application that receives DVB-H broadcast signal

DVB-H is a fairly new broadcasting medium. One purpose it is used for is to broadcast TV channels to TV phones and mobile decoders.
The software supplied by the service provider for windows does the job, but the display is small. I want to explore the possibilities of creating my own software that receives the signal and displays it to the screen. Also perhaps create an application to do the same on Blackberry and Android phones.
Anyone with any leads as to where I can get more info on coding with for DVB-H Broadcasts?
If you are working with Linux, you can probably best use Linux API (see this) under the LinuxTV project.
Alternatively, in J2ME based platforms you can follow JSR272 to access the DVB-H receiver. See this and this for more reference.
Unfortunately DVB-H based devices are specialized, so you need to specify which devices you want to support.

Sending print request from with-in an iPhone application

Is there a way to send a print request to a printer using wifi or some other means?
Edit:
There must be, because there are some applications which lets you do that. But how do they do it? For example,
HP iPrint Photo
Air Photo
EuroSmartzPrint
and maybe others as well.
There's no native way to print in Apple's SDK. Air Photo prints using a helper app installed on a computer, so it sends the request to the desktop app which actually sends the print request. HP's app can connect to HP printers that it can find on the network, presumably using Bonjour. The difficulty with printing directly is getting the right drivers, fortunately for HP, they make the printers too. EuroSmartz I believe does both previous methods, but they make no claim as to how good the quality will actually be printing directly to the printer, probably because they can't include vendor supplied drivers.
So, if you want to print your options are:
Connect to the printer via Bonjour and attempt to print without vendor supplied drivers (maybe you can find open source ones).
Write a desktop app to assist in printing. (Better quality, but requires a middle man.)
Update:
With iOS 4.2, Apple is including a new technology called "AirPrint". Apple is essentially doing both #1, by printing directly to HP printers that support ePrint (my understanding is that this doesn't use drivers in the traditional sense), and #2 by printing via a Mac with OS X 10.6.5.
Yes, you can certainly find printers nearby using Bonjour and the NSNetServiceBrowser class. Specifically you'd want to send its searchForServicesOfType: message, with a type of #"_ipp._tcp" (nearby printers). Check out the Browsing for Services article in the developer documentation. How the actual spooling to print works is beyond me. I'm just learning GameKit/Bonjour right now.
As far as I know it is only possible if the devices are Bonjour-enabled as part of the Made For iPod program. Then you can use EAAccessoryManager and related classes to make a connection and send data to the device. This is one of the harder things you can attempt on an iPhone...
Here's another (perhaps) useful question on the subject.