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:
/dev/pn548
exists 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ändertAPPL_TRACE_LEVEL
auf 0x05
für brcm 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):
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:
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):
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.
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):
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.
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.
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 ":
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! :)
Tags und Links android nfc apdu hce nxp-microcontroller