1*5c4dab75SAndroid Build Coastguard Worker# What? 2*5c4dab75SAndroid Build Coastguard Worker 3*5c4dab75SAndroid Build Coastguard Workerese-relay connects libese's functionality to a local abstract socket on 4*5c4dab75SAndroid Build Coastguard Workeran Android device. The primary purpose is to ease development and provision 5*5c4dab75SAndroid Build Coastguard Workerwith test hardware without bringing up all the development tools needed. 6*5c4dab75SAndroid Build Coastguard Worker 7*5c4dab75SAndroid Build Coastguard Workerese-relay uses the same wire protocol as the 8*5c4dab75SAndroid Build Coastguard Worker[Virtual Smart Card](http://frankmorgner.github.io/vsmartcard/) project by acting 9*5c4dab75SAndroid Build Coastguard Workeras the "viccd" service. This enables use of any tool that supports 10*5c4dab75SAndroid Build Coastguard Worker[pcsc-lite](https://pcsclite.alioth.debian.org/) without any additional 11*5c4dab75SAndroid Build Coastguard Workerdevelopment. 12*5c4dab75SAndroid Build Coastguard Worker 13*5c4dab75SAndroid Build Coastguard Worker# Wire protocol 14*5c4dab75SAndroid Build Coastguard Worker 15*5c4dab75SAndroid Build Coastguard WorkerThe format is always 16*5c4dab75SAndroid Build Coastguard Worker Ln d0..dn 17*5c4dab75SAndroid Build Coastguard WorkerLn is a network byte order 16-bit unsigned integer length of the data. 18*5c4dab75SAndroid Build Coastguard Workerd0..dn are uint8_t bytes to tunneled directly to/from the card. 19*5c4dab75SAndroid Build Coastguard Worker 20*5c4dab75SAndroid Build Coastguard WorkerIf Ln == 1, it indicates an out of band control message. Supported messages 21*5c4dab75SAndroid Build Coastguard Workerare 1:0 - 1:4: 22*5c4dab75SAndroid Build Coastguard Worker * 0: Power off (ignored) 23*5c4dab75SAndroid Build Coastguard Worker * 1: Power on (implemented with a reset) 24*5c4dab75SAndroid Build Coastguard Worker * 3: Reset 25*5c4dab75SAndroid Build Coastguard Worker * 4: ATR - returns a fake ATR 26*5c4dab75SAndroid Build Coastguard Worker 27*5c4dab75SAndroid Build Coastguard Worker# Prerequisites 28*5c4dab75SAndroid Build Coastguard Worker 29*5c4dab75SAndroid Build Coastguard Worker * pcscd is installed on your system. 30*5c4dab75SAndroid Build Coastguard Worker * Build and install https://frankmorgner.github.io/vsmartcard/virtualsmartcard 31*5c4dab75SAndroid Build Coastguard Worker * Configure /etc/reader.d/vpcd as below. 32*5c4dab75SAndroid Build Coastguard Worker * Build ese-relay configured for the hardware in use. 33*5c4dab75SAndroid Build Coastguard Worker 34*5c4dab75SAndroid Build Coastguard Worker## /etc/reader.conf.d/vpcd: 35*5c4dab75SAndroid Build Coastguard Worker 36*5c4dab75SAndroid Build Coastguard Worker FRIENDLYNAME "Virtual PCD" 37*5c4dab75SAndroid Build Coastguard Worker DEVICENAME localhost:0x1000 38*5c4dab75SAndroid Build Coastguard Worker LIBPATH /usr/lib/pcsc/drivers/serial/libifdvpcd.so 39*5c4dab75SAndroid Build Coastguard Worker CHANNELID 0x1000 40*5c4dab75SAndroid Build Coastguard Worker 41*5c4dab75SAndroid Build Coastguard WorkerThis will cause pcscd to connect to localhost port 4096 on start as per the vsmartcard 42*5c4dab75SAndroid Build Coastguard Workerdocumentation. 43*5c4dab75SAndroid Build Coastguard Worker 44*5c4dab75SAndroid Build Coastguard Worker# Usage 45*5c4dab75SAndroid Build Coastguard Worker## In one terminal, run the service and forward the abstract UNIX socket to a local TCP socket: 46*5c4dab75SAndroid Build Coastguard Worker $ adb shell ese-relay-<hw> 47*5c4dab75SAndroid Build Coastguard Worker $ adb forward tcp:4096 localabstract:ese-relay 48*5c4dab75SAndroid Build Coastguard Worker 49*5c4dab75SAndroid Build Coastguard Worker## In another terminal, restart pcscd configured with an appropriate reader: 50*5c4dab75SAndroid Build Coastguard Worker $ /etc/init.d/pcscd restart # (Or whatever your init system requires.) 51*5c4dab75SAndroid Build Coastguard Worker 52*5c4dab75SAndroid Build Coastguard Worker## In yet another terminal, use your preferred* pcsc client: 53*5c4dab75SAndroid Build Coastguard Worker 54*5c4dab75SAndroid Build Coastguard Worker $ java -jar gp.jar -info 55*5c4dab75SAndroid Build Coastguard Worker 56*5c4dab75SAndroid Build Coastguard Worker* https://github.com/martinpaljak/GlobalPlatformPro is used here. 57