Remote Firmware Upgrade of HID OMNIKEY 5427 CK Smart card Reader using Windows CE embedded device - windows-ce

There was a requirement from a customer that they want a solution to upgrade the firmware of the HID OMNIKEY 5427 CK Smart card Reader remotely from an embedded device on which it is connected to. The embedded device runs Windows CE OS. They want a solution that runs on the embedded device and upon need they want to upgrade the firmware.
I read from the HID global documentation that this can be done in 2 ways.
Via a web server that starts when you connect the card reader to your Windows PC.
Via APDU commands in CCID mode.
It seems like the first option of booting a web server in the embedded device looks like a vague approach.
So, I am currently focusing on the second method of sending APDU commands to the card reader via CCID mode.
Does windows CE support the APDU communication for smart card readers? If so, is there some specific dll that I have to utilise and the corresponding APIs?
I am very new to this smart card environment and If you people could help me with some pointer, it will be greatly appreciated.
Thanks in Advance.

Related

Sending Control Commands to USB Barcode Reader

We are integrating a new barcode reader (Newland NLS-FM430) in one of our products and we need to control its functionality. We have already implemented this behavior with another reader but it was an RS232 version, so we were able to send commands and wait for its input. The new one is a USB version which makes things different.
Generally, we want to initialize the barcode reader when the application is started (e.g. to disable reading setup codes) and turn it off. Then we want to enable it at the moment we need input from it and disable it again once we have read the data. There are commands for all these operations, documented in the user guide.
The issue comes when trying to communicate with the USB device. When connected to the computer it acts as a normal keyboard (Human Interface Device, HID in Device Manager) and we need to send commands to it. For this we need to open a stream to the device and write in it. We tried different libraries and solutions and opening the device always fails with an ACCESS_DENIED error. My suspicion is that the device is locked because Windows uses it as a keyboard.
I found this topic which discusses a similar problem. They found a workaround by deleting the suffix /kbd in the Device Path (and ours also has as this suffix) but removing it does not work for us - it says it cannot find the device.
I am looking into a solution in C# or C/C++ that would make it possible to open a connection to the USB device and write to it. Any help is highly appreciated.
Your introduced user guide states that the scanner still supports serial port mode.
Page 76 : USB CDC
Page 79 : IBM SurePOS (Handheld)
Page 79 : IBM SurePOS (Tabletop)
You can stop using it in keyboard input emulation mode and use serial port mode.
This is because, also on page 14 Chapter 3 System Settings of the User Guide, it is stated that the user can program by serial command.
Command Programming
The FM430 can also be configured by serial commands sent from the host device.
Users can design an application program to send those command strings to the scanners to perform device configuration
For more information, refer to the Programming Guide Based on Newland Unified Command s Set.
What's more, the vendor-provided configuration tool, also on page 13 Chapter 2 EasySet of the User Guide, does not support configuration in keyboard input simulation mode.
EasySet can communicate with device via one of the following interface: RS 232, USB COM Port Emulation (UFCOM driver required), USB CDC (UFCOM driver required), USB DataPipe (UFCOM driver required), USB HID POS.
In addition, the HID POS (POS HID Barcode Scanner) mode on page 77 allows for configuration and input/output as a variant of HID as described in the USB.org specification HID Point of Sale Usage Tables 1.02.
However, that method will not be able to notify the barcode read by the keyboard input emulation method. And it will require more complicated programming than setting/input/output in serial port mode.

WebUSB with FT230x serial chip

I'm hoping to use the newly released WebUSB API to communicate with a device i developed. This devices uses a FT230X USB to serial chip. The drivers of this chip are installed on most devices and communicating with it using minicom works smoothly. Now i want to try communicate with it through the browser. I started by downloading this example for arduino: webusb arduino. I set the filter to { 'vendorId': 0x0403, 'productId': 0x6015 } which shows the device. I'm able to find the device but when i try to connect i get the error: NotFoundError: Device unavailable.
Is there a way to find more specific errors? Should i set up a different interface or do i need to change some other configurations? I'm new to USB drivers so any help getting me on my way would be nice. I did read the (short) getting started documentation here. I use Ubuntu 16.04
The FT230X USB to serial chip does not provide an USB interface that Chrome can take control of. This is because, as you mention, the drivers for this chip are available with your operating system. With the serial driver attached Chrome cannot make the device available to your page through the WebUSB API.
The Arduino example programs the Atmel 32u4 chip on many Arduino and Arduino-compatible boards to add an additional USB interface which is not claimed by any system driver and is therefore available to Chrome.
Some developers have also had success either changing the vendor and product ID of their device so that the OS drivers do not claim it or by manually unbinding the driver.

How can I send an advertisement from the Genuino and connect to the Galileo via Bluetooth?

I'm trying to send data via bluetooth from an Intel Genuino to an Intel Galileo. The Galileo will act as the Master node in this connection. I have configured the Galileo so that it is discovering bluetooth devices and I have paired my phone to the Galileo via bluetooth.
What I need to do is pair the Genuino with the Galileo. I have tried some of the sample programs that Arduino provides but I cant seem to pair or connect the two devices.
So the question is, if I have my Galileo discoverable and ready to pair, how can I send an advertisement from the Genuino and connect to the Galileo.
Alternatively: if anybody has a link to a site that explains the blePeripheral and bleCentral commands, that would be great.
Cheers
On the Arduino/Genuino 101 board, use CurieBle to create a peripheral. There are some example sketches to get you started. CurieBle works very similar to the Arduino BLEPeripheral library.
You don't need to pair devices. On the Genuino 101, run the sketch that creates the Bluetooth LE Service. On the Galileo, run a program that discovers service running on the 101 and connects to it. You can write the program for the Galileo using noble and Node.js.

Custom UUID for bluetooth using bluez

I'm trying to pair my iPhone with my ubuntu computer over bluetooth. I'd like to use CoreBluetooth. I have bluez configured correctly, but I need a UUID for CoreBluetooth to connect to my computer. How do I go about setting a custom UUID in bluez?
Ultimately, I'd like to send commands with my iPhone to my pc and then use https://github.com/eelcocramer/node-bluetooth-serial-port to access the transferred data. Is there a better way to do this? I'm new to bluetooth.
Does your computer supports bluetooth 4.0? You can search for
[centralManager scanForPeripheralsWithServices:nil options:nil];
and every reachable device will be found.
With your other problem i can't help you sry.
You need to use bluetooth classic not the low energy for serial port communication

Modem Manager Program for Linux

I am planning to create a Modem Manager program for a USB Modem (GSM). However I am uncertain on how to implement the features using QT/C++ on Ubuntu/Linux.
The graphical program window will show detils like network strength and carrier's name, as well as be able to access SMS and contacts on the SIM card.
It will feature a connect button to connect to the network and USSD option to check balance and data usage. These features are available to the users using this modem on Windows.
How can one implement them on Linux? Any tutorial or article to start with. I am ready to research and practise but don't know where to head?

Resources