Hardware Lab Kit (HLK) for Near Field Communication (NFC)
The HLK for NFC validates that the NFC driver implementation meets Microsoft specifications. Although the tests are able to be run manually, for automated, faster and more reliable testing for the HLK NFC test suite, we recommend that partners acquire the NFC Interoperability Test Tool (NITT).
The NITT simulates Type 1, 2, 3, and 4 NFC forum tags. The NITT has a robot arm that moves an RF shield, simulating tapping/un-tapping operations for Peer-to-Peer and Card Emulation scenarios. The following image illustrates the NITT setup.
The NITT is powered with an external power supply of 7.5v and is connected to the client PC.
To acquire the NITT, use the following contact information:
JJG Technologies LLC
1034 231st Pl NE
Sammamish, WA 98074
Phone: (206) 304-1921 Fax: (208) 298-0623
inquiry@jjgtechnologies.com
After setting up the HLK test framework:
Hardware requirements
- Device with NFC chip that implements the NFC driver DDIs and is subject to compliance tests (referred to as Device Under Test (DUT))
- Desktop PC with USB port (PC client)
- NITT board (if available) connected to the PC client
- Device with NFC chip that implements the Near Field Proximity DDIs (NFC client)
- Smart card reader connected to the PC client (either by USB or embedded in the PC client)
Note
The PC client requires the installation of the Universal C Runtime. This package is available directly from the Microsoft Download Center.
Test execution
Before you run the test
- Make sure HLK client is deployed to DUT.
- Place the DUT on top of the NITT board NFC antenna.
- Place NFC client or smart card reader, depending on the test being run, below the NFC antenna and the RF shield of the NITT.
- Make sure the PC client has the Universal C Runtime installed.
- Make sure DUT, NFC client and PC client have network connections. If the DUT or the NFC client is a phone, you will need the Virtual Ethernet tool to be able to connect to the phone.
The HLK studio/controller deploys and runs test cases on the DUT but some intervention on the tester's part is required. For test cases where manual intervention is required, the helper binaries need to be launched manually. In order to do so, the NFC and PC clients need to have the following setup:
NFC client
Create a working folder, and copy TAEF binaries corresponding to the client architecture from the HLK controller to the working directory. For a typical HLK studio setup, the TAEF binaries will be located in the following directory:
C:\Program Files (x86)\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\*\MinTE\*
Where <arch> is either x86, x64, arm, arm64.
Copy NfcRemotePeerService.dll from the following HLK Studio location to the working directory created above:
C:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\NFC\NfcRemotePeerService.dll
Where <arch> is either x86, amd64, arm, arm64.
PC client (*setup if using NITT)
Create a working folder, and copy TAEF binaries corresponding to the client architecture from the HLK controller to the working directory. For a typical HLK studio setup, the TAEF binaries will be located in the following directory:
C:\Program Files (x86)\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\*\MinTE\*
Where <arch> is either x86, x64, arm, arm64.
Copy NfcNittController.exe from the following HLK studio location to the working directory created above:
C:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\NFC\NfcNittController.exe
Where <arch> is either x86, amd64, arm, arm64.
Copy MuttUtil.dll from the following HLK studio location to the working directory created above:
C:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\usb\MuttTools\MuttUtil.dll
Where <arch> is either x86, amd64, arm, arm64.
PC client (*setup if not using NITT)
Create a working folder, and copy NfcManualHelper.exe corresponding to the client architecture from the HLK controller to the working directory. For a typical HLK studio setup, NfcManualHelper.exe will be located in the following directory:
C:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\NFC\NfcManualHelper.exe
Where <arch> is either x86, x64, arm, arm64.
Running the test using HLK
HLK Studio
In HLK studio, select the test from the "Tests" tab as per following image:
Click Run Selected
If you are running the tests manually (without the NITT) then change the Parameters value from nitt to manual, as shown in the following image:
Testing with NFC client
Open the command prompt, and go to the working folder created above
Run the following command:
TE.exe NfcRemotePeerService.dll /p:server=<ip_of_dut>
Where <ip_of_dut> is the IP address of the DUT
NfcRemotePeerService.dll will connect to the test running on the DUT and will receive commands from the test. These commands will instruct NfcRemotePeerService.dll on when to create Near Field Proximity publications and subscriptions on the NFC client. When the DUT and the NFC client are tapped together, the publications and subscriptions will fire, exercising NFC's Peer-to-Peer scenarios.
Testing with PC client (*setup if using NITT)
Open the command prompt, and go to the working folder created above
Run the following command:
nfcnittcontroller.exe -server <ip_of_dut> -tagIndex <tag_index> -reader <reader_name>
Where <ip_of_dut> is the IP address of the DUT, <tag_index> is the NITT board tag index, and <reader_name> is the name of the smart card reader connected to the PC client. Possible values of <tag_index> are 1, 2, 3, and 4 corresponding to NFC Forum compliant T1T, T2T, T3T, and T4T, respectively. To find the name of the smart card reader connected to the PC client, you can use the -listReaders option of NfcManualHelper.exe (see below).
NfcNittController.exe will connect to the test running on the DUT and will receive commands from the test. These commands will instruct NfcNittController.exe on when to perform actions with the NITT. These actions are performed automatically and don't need any manual interaction. Example actions: Opening and closing the RF shield, turning on and off a tag on the NITT.
PC client Test(*setup if not using NITT)
Open the command prompt, and go to the working folder created above
Run the following command:
nfcmanualhelper.exe -server <ip_of_dut> -reader <reader_name>
Where <ip_of_dut> is the IP address of the DUT and <reader_name> is the name of the smart card reader connected to the PC client. To find the name of the smart card reader connected to the PC client, you can run the following command:
nfcmanualhelper.exe -listReaders
NfcManualHelper.exe will connect to the test running on the DUT and will print instructions on what to do while the test is executing. Example instructions: Tap DUT onto NFC client, tap DUT onto smart card reader, tap DUT onto Near Field Proximity tag.