NFC-Offhost-Routing zur UICC auf dem Nexus 5X und dem Nexus 6P

8

Ich versuche, den NFC-Chipsatz auf dem Nexus 5X (Groppe) oder Nexus 6P (Angler) zu konfigurieren, um die UICC als NFC-Offhost-Route für AIDs zu verwenden, die ich in meinem OffHostApduService deklariere.

Bearbeiten Jan 17, 2016: Ich habe diese Frage aktualisiert und habe auch das Nexus 6P mit einbezogen, da ich es auch testen konnte und es sich genau wie das 5X verhält. Daher scheinen alle früheren Ergebnisse des 5X auch für den 6P zu gelten.

Ich habe es schon früher auf einem Nexus 5 (Hammerhead) geschafft, dank Michael Rolands Antwort auf diese Frage hier und auch auf einem Nexus 6 (shamu) (siehe Nexus 6 bcm2079x config in meinem Github-Repository ).

Allerdings scheint das Nexus 5X (und auch 6P) anders zu sein:

  • laut ifixit teardown enthält es einen neuen Chipsatz von NXP (PN548) und nicht Broadcom bcm2079x wie Nexus 4, 5 und 6).
  • Ich kann bestätigen, dass das Gerät Mifare Classic-Tags lesen kann (was die Annahme verstärkt, dass es einen NXP-Chipsatz enthält, da Broadcom-Chipsätze Mifare Classic nicht unterstützten) und eine Gerätedatei /dev/pn548 exists
  • aber seltsamerweise enthält es sowohl eine libnfc-brcm.conf als auch libnfc-nxp.conf config Datei unter /system/etc/ (Sie finden diese auch in meinem Github Repository)

Als Ausgangspunkt habe ich die Trace / Log-Einstellungen in beiden Konfigurationsdateien

geändert
  • setze APPL_TRACE_LEVEL auf 0x05 für brcm
  • setze NXPLOG_*_LOGLEVEL auf 0x03 für nxp

Was mich wunderte war, dass ich eine Menge der BrcmNfcJni -Nachrichten in logcat während des Bootens sehe, ähnlich wie bei Nexus 5 und 6 (was ich auf einem Gerät mit NXP nicht erwartet hätte) Chipsatz):

%Vor%

Bearbeiten 1: Ich habe von der Quelle erfahren, dass diese "BrcmNfc .." Protokollnachrichten vom Code in der Bibliothek libnfc-nci ausgegeben werden. Auf früheren Geräten wurde der NCI (steht für: N FC c Controller i Interface) nur von Broadcom-Chipsätzen verwendet (ich denke, das ist der Grund, warum Der Code verwendet das Präfix "Brcm" für die Protokollierung. Aber anscheinend verwenden die neuen NXP-Chipsätze jetzt auch diese standardisierte Schnittstelle (was gut ist), und jetzt sehen wir auch die "Brcm ..." - Protokollnachrichten sogar mit einem NXP-Chipsatz.

Bearbeiten 3: Beide Telefone (Nexus 5X und 6P) scheinen den NXP PN548 / C2 NFC-Chipsatz zu enthalten, auf dem die Firmware-Version 10.01.19 läuft (zumindest in der Android 6.0.1-Version).

Natürlich gibt es auch Ausgänge von NXP pn54x halimpl:

%Vor%

Als erstes habe ich versucht, die libnfc-nxp.conf -Datei zu modifizieren, angefangen mit Parametern, bei denen die Kommentare auf eine UICC oder SWP hinweisen:

%Vor%

und auch das A0EC -Tag in NXP_CORE_CONF_EXTN auf 0x01 setzen (da der Kommentar angibt, dass dieses Tag für den SWP1-Connector verantwortlich ist):

%Vor%

Leider hat das nicht funktioniert und ich erhalte weiterhin die APDUs, die auf meinen Offhost-Dienst im Host-System abzielen (wie durch diese Logcat-Nachricht angezeigt: E/HostEmulationManager( 3434): AID that was meant to go off-host was routed to host. ).

Bei späteren Versuchen habe ich auch versucht, mit den Parametern in libnfc-brcm.conf herumzuspielen (wie von Michael Roland in der oben genannten Frage beschrieben), war aber immer noch nicht erfolgreich.

FRAGE:

  • Ist es jemandem gelungen, das NFC-Offhost-Routing auf dem Nexus 5X oder 6P auf die UICC zu konfigurieren?
  • Oder vielleicht ein paar Hinweise, wo ich nach weiteren Einsichten suchen kann?
  • Auch ein Datenblatt für den PN548-Chipsatz wäre sehr hilfreich.

Bearbeiten 2: Ich habe immer noch keine funktionierende Lösung gefunden, aber ich habe meine Versuche bis jetzt auf mein github-Repository unter dem dev1 Zweig . Ich schob auch die resultierenden logcat Ausgaben für jeden Test. Ich teste mit einem neuen unbewohnten Nexus 5X auf Stock Android 6.0.1. (Edit: In der Zwischenzeit habe ich auch ein Nexus 6P zum Testen bekommen, aber es verhält sich identisch.) Um die Konfigurationsdateien auf der Systempartition zu ändern, starte ich temporär in ein sideloaded Recovery Image: ( fastboot boot twrp-2.8.7.2-bullhead.img ).

Im Moment bekomme ich immer diesen Fehler (ich habe es auch schon mit 0xf2 und 0xf4 als Off-Host Routing-Ziel versucht):

%Vor%     
Johannes Zweng 13.12.2015, 12:20
quelle

2 Antworten

6

Wie Sie bereits festgestellt haben, sind die SWP-Leitungen nicht mit dem UICC-Steckplatz verbunden. Bei Nexus-Geräten tun wir dies normalerweise nicht, da wir in AOSP keine sicheren Elemente auf der UICC unterstützen. Die einzige Ausnahme ist das Nexus 6 auf Lollipop, das in den USA die SoftCard-Zahlungen unterstützt (zusammen mit HCE). Nachdem SoftCard von Google erworben wurde, entfernten wir den Code zur Unterstützung von UICCs erneut in Marshmallow.

Ich bin überrascht, dass das bei N5 funktioniert hat - es sollte auch kein SWP angeschlossen sein. Vielleicht wurde dies nicht auf allen Geräten richtig gemacht.

    
Martijn Coenen 22.12.2015, 11:20
quelle
5

Kurze Antwort:

Das NFC-Offhost-Routing zur UICC scheint auf dem Nexus 5X nicht möglich zu sein ( edit: und auch auf Nexus 6P). Soweit ich weiß, ist die SWP Leitungen des NFC-Chips sind nicht mit der UICC verbunden (an beiden Telefonen).


Bearbeiten 1 : In der Zwischenzeit habe ich die Hände auf einem Nexus 6P bekommen, der die gleichen Tests gemacht hat, wie ich es beim 5X gemacht habe. Ich kann jetzt bestätigen, dass sich die 6P identisch verhält. Ich habe sogar die gleichen Fehler in Logcat beim Aufruf der Funktion phNxpNciHal_SwpTest . Also auch auf dem Nexus 6P ist die SWP-Leitung nicht mit der UICC verbunden.


Details:

Nach zahlreichen vergeblichen Versuchen mit verschiedenen Einstellungen der Konfigurationsdatei habe ich die NXP-Implementierung in libnfc-hci Bibliothek und fand die interessante Funktion" phNxpNciHal_SwpTest "in " Selbsttest / phNxpNciHal_SelfTest.c " was laut der Kommentar scheint die SWP-Zeilen zu testen:

%Vor%

Ich habe dann die Datei hal/phNxpNciHal.c modifiziert (viele Debug-Log-Anweisungen hinzugefügt, nur um den Ablauf besser zu verstehen) und 2 Aufrufe dieser Testfunktion hinzugefügt. Zuerst habe ich versucht, es am Ende der Funktion phNxpNciHal_open hinzuzufügen (siehe meine Änderungen hier auf GitHub ) und später habe ich auch versucht, es am Anfang der phNxpNciHal_close -Funktion hinzuzufügen, bevor die NFCC-Schnittstelle tatsächlich geschlossen wurde, nur um sicher zu sein, dass UICC und alles zu diesem Zeitpunkt initialisiert ist (siehe commit 6b33149 auf meinem oben verlinkten GitHub-Konto).

Während der Tests wurde eine SWP-fähige UICC in das Gerät eingefügt.

Leider haben alle Aufrufe von phNxpNciHal_SwpTest einen Fehler zurückgegeben (für beide SWP-Zeilen). Suchen Sie in der folgenden logcat-Ausgabe nach der Zeichenfolge " phNxpNciHal_SwpTest - FAILED ":

%Vor%

Fazit:

Ohne weitere Kenntnisse über Hardware-Details des NXP PN548 / C2 Chipsatzes nehme ich an, dass beide SWP-Leitungen des Chipsatzes nicht mit dem Nexus 5X (Bullhead) Telefon verbunden sind.

>

Wenn jemand mehr Einblick in dieses Thema hat, bitte korrigieren Sie mich! :)

    
Johannes Zweng 22.12.2015 08:33
quelle