Card Interface zu Linux?

  • Weiß hier jemand wie das in den kleinen Dreamboxen oder anderen Linux-Recievern ohne CI-Modul gelöst ist? Greift das Betriebssystem das direkt auf die Abbokate zu oder ist da noch ne art fest verbautes CI-Modul oder intelligente Cardreader-Hardware dazwischen?
    Wenn der Kartrenzugriff direkt von Linux her geschieht interessiert mich mit welchem Device-Treiber das gemacht wird, ist das was proprietäres von DMM oder ist das freier Linux-code?

  • Ich habe nicht vor irgendwelche ilegalen Sachen mit Pay-TV-Karten zu machen, ich suche aus ganz anderen Gründen nach ner Möglichkeit mit Linux Emmbedded-systemen mit Smartcards nach dem Standard ISO7816 zu kommunizieren.


    Kann diese Frage hier wirklich keiner beantworten?

  • mich interessiert ja eher wie das bei Boxen gelöst ist die kein CI verwenden oder haben die zumindest CI-Hardware fest intern verbaut? Bei der D-Box war das ja glaube ich so.
    Ich dachte das würde um Hardware zu sparen in solchen Fällen (z.B. DM500) nur emuliert.

  • Ist es heir schon so weit gekommen, dass das Wissen, das es nicht geben darf, auch komplett in Vergessenheit geraten ist?

  • Hi,
    schau nach SmartMouse oder EasyMouse die werden per USB verwunden und dank FTDI glaube ich seriell angesprochen. Zur Kommunikation geht es dann über /dev/usb. Ob das jetzt mit ISO7816 klappt keine Ahnung.


    ciao

    ---
    7020, Combo, Solo2, Ultimo

    Einmal editiert, zuletzt von Trial ()

  • genau darum geht es mir nicht, ich muss ein Linux embedded system aufsetzen was auf der Hardwareebene mit den karten kommuniziert nichts mit USB und Cardreader.

  • Hi,


    ISO7816 beschreibt doch in erster Linie die Eigenschaften einer Karte und deren Schnittstellen nach aussen. Wenn du diese Schnittstellen bedienen willst, kannst du diese auch über einen USB Cardreader ansprechen. Wichtig ist in erster Linie, dass der Reader die Karte mit der richtigen Frequenz anspricht, damit diese starten kann. Ob der Reader nun einen FTDI Chipsatz hat oder direkt vom SoC angesprochen wird: ein Kernelmodul, über das ein Device erzeugt wird, wird es immer geben. Wenn du eines hast, dann kannst du es auch nutzen, um die Schnittstellen der Karte anzusprechen.


    Geht es dir darum, ein Kernelmodul zu schreiben oder willst du wissen, wie du eine Smartcard über ein Linux-Device ansprechen musst? Jede andere Kommunikation würde IMHO unabhängig vom OS laufen.

  • Meine Aufgabe ist es ja eien Kernel-Treiber ohne Reader von der Stange zu implementieren und ich suche halt nur danach ob das schon jemand vor mir gemacht hat oder ob ich dieses "Rad" erst noch erfinden muss.
    Ich glaube ja nicht, dass in der guten alten DM500 ne Smartmouse verbaut war, bei den D-boxen waren ja wirklich irgendwelche CI-module fest eingebaut, bei der DM500 aber meines Erachtens nicht mehr oder wenn dann nur auf Chip-Ebene, ich habe meine ja schon mal aufgeschraubt.

  • Danke, schon mal ein guter Ansatz, was mich stört ist allerdings der USB ich benötige etwas was direkt auf den UART des SOCs geht am nächsten dran wären da wohl ehr devicedriver für Cardreader mit RS232.

  • das sieht gut aus, vielen Dank.

  • Die Frage ist doch eher:
    Wie weit runter willst/kannst/musst du gehen...


    Wenn du "nur" mit RX/TX/CLK arbeiten willst [also wirklich "roh" mit der Karte reden willst], müsstest du schon ein Kernel-Modul für das Linux schreiben [höher wird das nichts mehr, weil du auf höheren Ebenen keine vernünftige Möglichkeit mehr hast, auf die Hardware zuzugreifen].


    Wenn du hingegen damit klarkommst, dass ein UART-Chip die Kommunikation übernimmt und du diesen "nur" per Register ansprechen musst und dieser UART dann die "eigentliche" Kommunikation macht, geht die Sache schon einfacher. Wobei du dann natürlich auf die Charakteristiken des UART-Chips "angewiesen" bist...


    Und was die "normalen" Boxen anbetrifft:
    Da gibt's in dem Sinne keine CI-Emulation o.ä., sondern die Karte wird über einen UART im SoC/µC direkt angesprochen - und wie dieser programmiert wird, steht i.d.R. im Handbuch zum SoC oder µC. Meist musst du dazu die Daten in ein spezielles Register schreiben und danach einen Interrupt auslösen -oder- genau anders herum auf einen Interrupt reagieren und die Daten aus dem Register lesen...