SAM3SxA_Stick



SAM3SxA_Stick Board image


Diesmal nun ein Spezial-Projekt, um ein kleines alltagstaugliches Gerät basierend auf einigen pC/..-Modulen zu kreieren.
Die Idee, ein USB-Stick mit SD/MMC-Slot, um darauf basierend einen Memory-Stick und/oder Web- und FTP-server laufen zu lassen. Sicherlich nichts besonders Außergewöhnliches, aber mal ein Mini-Projekt ohne gleich wieder 101 neue Software-Module zu benötigen.
Bisher sind nachfolgende pC/.. Module zur Verwendung vorgesehen:


SAM3SxA_Stick -Sheet (as PDF)
SAM3SxA_Stick -Sheet (as PDF)

SAM3Sxx_Stick -Board
SAM3SxA_Stick -Board top
/ rear


Um dem Ganzen ein professionellse Aussehen zu verpassen und das Ganze wirklich Alltagstauglich zu gestalten, wurde diesmal das existierende und perfekt geeignete Gehäuse des Transcend TS-RDS5W wieder verwendet.

Transcend Stick TS-RDS5W image
Also org. Innenleben raus - und Eigenentwicklung rein :-)

SAM3SxA_Stick boxed


Als Netzwerkknoten wird er einfach über seine Adresse "http://S3Stick.intern" bzw. "ftp://S3Stick.intern" angesprochen, den Rest erledigt der kleine WINS-Server im Stick. Dabei entscheidet sich beim Anstecken das USB-Host System des PC(Windows/Linux) für die jeweils unterstützte USB-Netzwerkvariante - also Windows verwendet RNDIS und Linux verwendet CDC-Ethernet(ECM). Anschließend kann ganz normal mit einem Web-Browser und einem FTP-Client auf den Stick zugegriffen werden.

Als Memory-Stick wird er ganz normal, wie jeder Andere, verwendet. Einfach anstecken und einen Augenblick warten. Anschließend einfach auf das neue Laufwerk zugreifen. Dieses wird durch den Stick als "Removable Media" deklariert.


ScanDriveViewer:

Um die durch den pC/MMC-Code (SPI-mode) ermittelten Informationen auch ohne eigenes Display auslesen und anzeigen zu können, habe ich ein kleines Windows-Programm geschrieben, daß diese Informationen via SCSI-Inquiry (vendor-page 0xD0) ausliest und wieder gibt. Dazu sucht das Programm nach einem passenden Gerät via "SCSI-Inquiry page 0" VerdorID/ProductID (plus optional Revision) und fragt diesen nach der Vendor-page.
Wenn eine "secure micro SD" (ein Sicherheits-Element wie bei einer SmartCard ist integriert) gefunden wird, werden diese zusätzlichen Informationen optional wieder gegeben und ein einfaches APDU-Interface bereit gestellt.

Nach einer Portierung steht dieses Programm nun auch auf Android für Smartphones und Tablets zur Verfügung. Neben den üblichen Daten zur eingesetzten Karte, kann diese App auch die Daten des internen (e)MMC-Speichers und - wenn vorhanden - der im Gerät eingesetzten (micro)SD-Karte dekodieren und anzeigen.

Hier die beiden kleinen Programme zum Download:


ScanDriveViewer Windows image

ScanDriveViewer.zip
download ScanDriveViewer.exe

(as ZIP - requires .NET framework)

ScanDriveViewer Android image

ScanDriveViewer.apk
download ScanDriveViewer.apk

(requires Android 3.1 or newer)



Nachfolgend einige Screen-Shots der kleinen Programme bei verschiedenen Karten im Adapter.


ScanDriveViewer with MMC ScanDriveViewer with MMC card
ScanDriveViewer with MMCmobile ScanDriveViewer with MMCmobile card
ScanDriveViewer with MMCplus ScanDriveViewer with MMCplus card
ScanDriveViewer with SD ScanDriveViewer with SD card
ScanDriveViewer with SDHC ScanDriveViewer with SDHC card
ScanDriveViewer with SDXC ScanDriveViewer with SDXC card
ScanDriveViewer with Mobile Security Card ScanDriveViewer with Mobile Security Card
ScanDriveViewer App on Tablet with Mobile Security Card ScanDriveViewer App on Tablet with Mobile Security Card
ScanDriveViewer App on Tablet shows internal memory ScanDriveViewer App on Tablet shows internal memory
ScanDriveViewer App on Tablet shows inserted SD card ScanDriveViewer App on Tablet shows inserted SD card
ScanDriveViewer App on Tablet about dialog ScanDriveViewer App on Tablet about dialog
ScanDriveViewer App with SDHC ScanDriveViewer App on Smartphone with SDHC
ScanDriveViewer App shows internal memory ScanDriveViewer App on Smartphone shows internal memory
ScanDriveViewer App shows inserted SD card ScanDriveViewer App on Smartphone shows inserted SD card



Wenn die CCID USB-Klasse als Composite mit eingebunden wurde, stellt der Adapter für secure µSD Karten auch ein PC/SC Interface bereit, über den APDU's mit dem enthaltenen secure element ausgetauscht werden können. Er wird vom Host ganz normal als Kartenleser eingebunden (siehe MSC & CCIDDevice-Manager) und kann von entsprechenden Standard-Anwendungen verwendet werden.

Windows

Linux

Android (Pcscdroid von seek-for-Android)

PC/SC Windows

PC/SC Linux

PC/SC Android

Windows lädt den USBCCID WUDF Treiber auf alle Geräte mit CCID oder ICCD ohne volle ICCD Unterstützung, verwendet seine eigenen Beschreibungs-Strings und ignoriert die USB String-Descriptoren des Interfaces. Linux mit PC/SC-lite arbeitet ausschließlich mit CCID-Readern aus einer white-list zusammen. Ein unbekannter Reader muss daher erst in diese Liste eingetragen werden, der dort hinterlegte Geräte Text wird verwendet und nicht die USB String-Descriptoren des Gerätes bzw. Interfaces ("Info.plist"). Android benötigt Pcscdroid von seek-for-android. Zusätzlich zu allen Linux Besonderheiten (white-list & Device strings), die hier auch gelten, muss das Gerät außerdem geROOTed sein um mit CCID-Readern über USB kommunizieren zu können.





X

SAM3SxA_Stick -Board


X

SAM3SxA_Stick -Board


X

ScanDriveViewer with MMC card


X

ScanDriveViewer with MMCmobile card


X

ScanDriveViewer with MMCplus card


X

ScanDriveViewer with SD card


X

ScanDriveViewer with SDHC card


X

ScanDriveViewer with SDXC card


X

ScanDriveViewer with Mobile Security Card


X

ScanDriveViewer App on Tablet with Mobile Security Card


X

ScanDriveViewer App on Tablet shows internal memory


X

ScanDriveViewer App on Tablet shows inserted SD card


X

ScanDriveViewer App on Tablet about dialog


X

ScanDriveViewer App with SDHC


X

ScanDriveViewer App shows internal memory


X

ScanDriveViewer App shows inserted SD card


X

ScanDrive as MassStorage & CCID


X

ASSD virtual ATR for CCID on Windows


X

ASSD virtual ATR for CCID on Linux


X

ASSD virtual ATR for CCID on Android