Analyzed and refactored code with regards to initial pairing and LTK / SK creation to make initial LTK key agreement more robust against LTK and SK negotiation failures with AirID1 devices.
Moved exchangeKey to AIDDeviceStateConnected
Added state counter to better track state changes and having better control for state transits
replaced calls to exchangeKey by state reenter
Use state counter for detecting init abort on problems or connectivity issues when Key agreement is in progress.
changed Timer Timeout for pairing (from selection to successful final initialization) from 30.0 seconds to 50.0 seconds
Changed encryption TAG length from 8 to 4 to comply with other platform drivers and make packet transmit more robust
Updated logging to use device name where appropriate
Fixed:
AirID reader becomes disconnected during initial connection with pairing (regression)
Fixed mis guided Timer Timeout which sometimes fires even when Timer was invalidated. This issue was partly responsible for firing "Initialization Timeout" Errors even when LTK and SK where successfully negotiated.
Use encrypted data length for packet calculation not the "unencrypted" data length.
Due to the huge amount of variants of Android OS implementations, we can not guarantee the function of AirID SDKs and AirID devices with any Android device. We are only supporting AirD2 in combination of the Enterprise Edition of Samsung Galaxy S8, S9 & S10.
In case of unstable AirID2 - Android connections please contact our support by creating a support ticket:
For more information about our products & services, please visit our website: https://airid.com/en/
Analyze code with regards to initial pairing and LTK/SK creation to make initial LTK key agreement more robust against LTK and SK negotiation failures with AirID1 devices.
Analyze and test code with regards to time intervals to eliminate AirID reader stuck on "not bonded yet".
Test and change the time intervals and delays on Bluetooth connection to make the connection more stable.
Set the key remotely from the app for saving LTKs is available. (Optional)
As there are many distributions of Linux available, please contact our support at https://certgate.com/service-portal to get the suitable AirID driver for your Linux system.
ensure that local changed settings are sent back to the host side.
Don't switch to update mode @ BLE indication "0x0A System Suspend".
Improve USB bootloader mode (HW version < 1.1.0) selection
Switch off JTAG pins if JTAG is fused
Improvements
Disable dynamic connection interval. Otherwise we might see BLE supervision timeouts.
Fix BLE disconnect after pairing and no communication for 3s. Some Android devices keep the BLE connection after pairing and blocks the communication between AirID app and AirID device.
Update BLE stack to version 2.13.6 and replace usage of deprecated BLE API methods.
Set 2M PHY as preferred PHY (BLE5)
Do all BLE related settings before advertising starts
A2XX: Switch off BLE when low battery limit is reached (~3.4V). This should prevent from smartcard errors at low battery conditions
New Functionality (API/SDK)
new RPC method 0x16 to switch to bootloader mode from host side
Prepare OTA functionality (only for A2MX and A2XX with HW version >= 1.1.0)
Removed Functionality
migrate NVM parameters from old NVM implementation. Note update from FW <= 1.1.1 are no longer supported!
Remove BLE indications to trigger update modes (0x04 and 0x0B)
Remove "Force 256 Bit" setting. "Force 256 Bit" is always enabled and cannot be disabled anymore.
Remove no longer needed settings: Contrast, Signal Strength and Limited Advertising
Add connection parameters to BLE event logging and distinguish between A2XX and A2MX timer handles
Shut up USB IRQ noises with older AirID2 hardware revisions -> speed fixes
Added
Disconnect after Bluetooth Pairing when there is no write to AirID service for 3s afterwards
Added watchdog to switch off Bluetooth when Battery gets below 3,4V (-0%) to avoid SC failures for power consuming tasks, RSA Keypair generation or other heavy duty operations
Added event logging capability for the last ~100 events to AirID2 firmware
To get an insight view what happens in the BLE stack @ a disconnect, we gather some debug infos:
Read last ble disconnect reason in debug menu
Information about connection parameters
New logging data struct for BLE stack events:
size ~100 last events
stop logging @ disconnect
read data from new RPC command
restart logging after read
This feature is currently only available from the DEBUG menu of the AirID2 device and not exposed to any SDK / Driver
Distance sensor presettings adjusted: near -70dB, mid -75dB, far -80dB
If the device is in USB card reader mode, a new bluetooth connection will not make it leave the USB card reader mode
Card support: disabled Clock stop support which seems to cause trouble with TicTok cards
For AirID Mini: Linearization of battery level during charging and discharging
Note for firmware updates
The device settings will be set to default for firmware updates from versions lower than v1.1.1. Please check your device settings after doing the firmware update
Note for firmware downgrades
If you want to downgrade to 1.1.1, first do a downgrade to 1.1.0, then upgrade to 1.1.1, otherwise NVM in 1.1.1 will not work even after factory reset. If re-updating, do a factory reset.
Note for users with version 1.2.0-rc1/rc2
For firmware updates from version 1.2.0-rc1/rc2, make sure the USB cable is not connected BEFORE the update process is started. In case the device is already connected via USB, replug the cable to enter the flashing mode.
Battery status icon updates with changed battery level
Staccato like switching connection off/on doesn't bother BLE handling
NVM initialization logic
Improved
Setting maximum and minimum advertising interval to 152.5 ms
Setting maximum and minimum fast connection intervals to 15 ms
Setting maximum and minimum slow connection intervals to 195/210 ms
Don't send duplicated smart card status
Keep existing configuration paramaters at firmware update; new ones will be added with their default values
LCD and backlight stay on at USB connection
Known limitations:
The firmware update might reset the configured settings
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
Implementation of settings --> "Remove pairing" to remove the pairing information and keys (prior name of this option: "Reset keys")
Implementation of settings --> "Reset keys" to delete the stored keys (LTK) only without removing the pairing (new option)
Removed "Card Info" item from menu
Forced LE Secure Connection method for BLE pairing and communication
Improved:
Turn on display and backlight permantly while the device is connected to a external power supply
Change default value for setting of USB Card Reader (CCID) to Off
Returning to prior menu item after USB Card Reader pop-up dialog closes instead of moving to main menu item "AirID" per default
Fixed:
issues concerning TPDU error handling
issues concerning the icon for distance sensor in case of exceeding BLE range
workaround for internal BLE stack issues by device reboot
Known limitations:
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
ensure that local changed settings are sent back to the host side.
Don't switch to update mode @ BLE indication "0x0A System Suspend".
Improve USB bootloader mode (HW version < 1.1.0) selection
Switch off JTAG pins if JTAG is fused
Improvements
Disable dynamic connection interval. Otherwise we might see BLE supervision timeouts.
Fix BLE disconnect after pairing and no communication for 3s. Some Android devices keep the BLE connection after pairing and blocks the communication between AirID app and AirID device.
Update BLE stack to version 2.13.6 and replace usage of deprecated BLE API methods.
Set 2M PHY as preferred PHY (BLE5)
Do all BLE related settings before advertising starts
A2XX: Switch off BLE when low battery limit is reached (~3.4V). This should prevent from smartcard errors at low battery conditions
New Functionality (API/SDK)
new RPC method 0x16 to switch to bootloader mode from host side
Prepare OTA functionality (only for A2MX and A2XX with HW version >= 1.1.0)
Removed Functionality
migrate NVM parameters from old NVM implementation. Note update from FW <= 1.1.1 are no longer supported!
Remove BLE indications to trigger update modes (0x04 and 0x0B)
Remove "Force 256 Bit" setting. "Force 256 Bit" is always enabled and cannot be disabled anymore.
Remove no longer needed settings: Contrast, Signal Strength and Limited Advertising
Add connection parameters to BLE event logging and distinguish between A2XX and A2MX timer handles
Shut up USB IRQ noises with older AirID2 hardware revisions -> speed fixes
Added
Disconnect after Bluetooth Pairing when there is no write to AirID service for 3s afterwards
Added watchdog to switch off Bluetooth when Battery gets below 3,4V (-0%) to avoid SC failures for power consuming tasks, RSA Keypair generation or other heavy duty operations
Added event logging capability for the last ~100 events to AirID2 firmware
To get an insight view what happens in the BLE stack @ a disconnect, we gather some debug infos:
Read last ble disconnect reason in debug menu
Information about connection parameters
New logging data struct for BLE stack events:
size ~100 last events
stop logging @ disconnect
read data from new RPC command
restart logging after read
This feature is currently only available from the DEBUG menu of the AirID2 device and not exposed to any SDK / Driver
Battery status icon updates with changed battery level
Staccato like switching connection off/on doesn't bother BLE handling
NVM initialization logic
LCD and backlight stay on at USB connection
improved
Setting maximum and minimum advertising interval to 152.5 ms
Setting maximum and minimum fast connection intervals to 15 ms
Setting maximum and minimum slow connection intervals to 195/210 ms
Don't send duplicated smart card status
Keep existing configuration paramaters at firmware update; new ones will be added with their default values
Known limitations:
The firmware update might reset the configured settings
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
ensure that local changed settings are sent back to the host side.
Don't switch to update mode @ BLE indication "0x0A System Suspend".
Improve USB bootloader mode (HW version < 1.1.0) selection
Switch off JTAG pins if JTAG is fused
Improvements
Disable dynamic connection interval. Otherwise we might see BLE supervision timeouts.
Fix BLE disconnect after pairing and no communication for 3s. Some Android devices keep the BLE connection after pairing and blocks the communication between AirID app and AirID device.
Update BLE stack to version 2.13.6 and replace usage of deprecated BLE API methods.
Set 2M PHY as preferred PHY (BLE5)
Do all BLE related settings before advertising starts
A2XX: Switch off BLE when low battery limit is reached (~3.4V). This should prevent from smartcard errors at low battery conditions
New Functionality (API/SDK)
new RPC method 0x16 to switch to bootloader mode from host side
Prepare OTA functionality (only for A2MX and A2XX with HW version >= 1.1.0)
Removed Functionality
migrate NVM parameters from old NVM implementation. Note update from FW <= 1.1.1 are no longer supported!
Remove BLE indications to trigger update modes (0x04 and 0x0B)
Remove "Force 256 Bit" setting. "Force 256 Bit" is always enabled and cannot be disabled anymore.
Remove no longer needed settings: Contrast, Signal Strength and Limited Advertising
Add connection parameters to BLE event logging and distinguish between A2XX and A2MX timer handles
Shut up USB IRQ noises with older AirID2 hardware revisions -> speed fixes
Added
Disconnect after Bluetooth Pairing when there is no write to AirID service for 3s afterwards
Added watchdog to switch off Bluetooth when Battery gets below 3,4V (-0%) to avoid SC failures for power consuming tasks, RSA Keypair generation or other heavy duty operations
Added event logging capability for the last ~100 events to AirID2 firmware
To get an insight view what happens in the BLE stack @ a disconnect, we gather some debug infos:
Read last ble disconnect reason in debug menu
Information about connection parameters
New logging data struct for BLE stack events:
size ~100 last events
stop logging @ disconnect
read data from new RPC command
restart logging after read
This feature is currently only available from the DEBUG menu of the AirID2 device and not exposed to any SDK / Driver
Distance sensor presettings adjusted: near -70dB, mid -75dB, far -80dB
If the device is in USB card reader mode, a new bluetooth connection will not make it leave the USB card reader mode
Card support: disabled Clock stop support which seems to cause trouble with TicTok cards
For AirID Mini: Linearization of battery level during charging and discharging
Note for firmware updates
The device settings will be set to default for firmware updates from versions lower than v1.1.1. Please check your device settings after doing the firmware update
Note for firmware downgrades
If you want to downgrade to 1.1.1, first do a downgrade to 1.1.0, then upgrade to 1.1.1, otherwise NVM in 1.1.1 will not work even after factory reset. If re-updating, do a factory reset.
Note for users with version 1.2.0-rc1/rc2
For firmware updates from version 1.2.0-rc1/rc2, make sure the USB cable is not connected BEFORE the update process is started. In case the device is already connected via USB, replug the cable to enter the flashing mode.
Battery status icon updates with changed battery level
Staccato like switching connection off/on doesn't bother BLE handling
NVM initialization logic
Green LED switches off when Smartcard has bee switched off
Battery warning appears at 10% battery charge and below
Send correct Product Name USB descriptor
Send correct Model Number String in GATT characteristics
Improved
Setting maximum and minimum advertising interval to 152.5 ms
Setting maximum and minimum fast connection intervals to 15 ms
Setting maximum and minimum slow connection intervals to 195/210 ms
Don't send duplicated smart card status
Keep existing configuration paramaters at firmware update; new ones will be added with their default values
Known limitations:
The firmware update might reset the configured settings
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
ensure that local changed settings are sent back to the host side.
Don't switch to update mode @ BLE indication "0x0A System Suspend".
Improve USB bootloader mode (HW version < 1.1.0) selection
Switch off JTAG pins if JTAG is fused
Improvements
Disable dynamic connection interval. Otherwise we might see BLE supervision timeouts.
Fix BLE disconnect after pairing and no communication for 3s. Some Android devices keep the BLE connection after pairing and blocks the communication between AirID app and AirID device.
Update BLE stack to version 2.13.6 and replace usage of deprecated BLE API methods.
Set 2M PHY as preferred PHY (BLE5)
Do all BLE related settings before advertising starts
A2XX: Switch off BLE when low battery limit is reached (~3.4V). This should prevent from smartcard errors at low battery conditions
New Functionality (API/SDK)
new RPC method 0x16 to switch to bootloader mode from host side
Prepare OTA functionality (only for A2MX and A2XX with HW version >= 1.1.0)
Removed Functionality
migrate NVM parameters from old NVM implementation. Note update from FW <= 1.1.1 are no longer supported!
Remove BLE indications to trigger update modes (0x04 and 0x0B)
Remove "Force 256 Bit" setting. "Force 256 Bit" is always enabled and cannot be disabled anymore.
Remove no longer needed settings: Contrast, Signal Strength and Limited Advertising
Add connection parameters to BLE event logging and distinguish between A2XX and A2MX timer handles
Shut up USB IRQ noises with older AirID2 hardware revisions -> speed fixes
Added
Disconnect after Bluetooth Pairing when there is no write to AirID service for 3s afterwards
Added watchdog to switch off Bluetooth when Battery gets below 3,4V (-0%) to avoid SC failures for power consuming tasks, RSA Keypair generation or other heavy duty operations
Added event logging capability for the last ~100 events to AirID2 firmware
To get an insight view what happens in the BLE stack @ a disconnect, we gather some debug infos:
Read last ble disconnect reason in debug menu
Information about connection parameters
New logging data struct for BLE stack events:
size ~100 last events
stop logging @ disconnect
read data from new RPC command
restart logging after read
This feature is currently only available from the DEBUG menu of the AirID2 device and not exposed to any SDK / Driver
Battery status icon updates with changed battery level
Staccato like switching connection off/on doesn't bother BLE handling
NVM initialization logic
Green LED switches off when Smartcard has bee switched off
Battery warning appears at 10% battery charge and below
Send correct Product Name USB descriptor
Send correct Model Number String in GATT characteristics
improved
Setting maximum and minimum advertising interval to 152.5 ms
Setting maximum and minimum fast connection intervals to 15 ms
Setting maximum and minimum slow connection intervals to 195/210 ms
Don't send duplicated smart card status
Keep existing configuration paramaters at firmware update; new ones will be added with their default values
Known limitations:
The firmware update might reset the configured settings
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
initial release of AirID 2 Mini Government Edition
Known limitations:
In the rare case that the BLE connection of the reader can not be switched off by the control element, please restart the reader.
For users working with BLE and CCID (USB Card Reader > On) with multiple devices: If there is an active BLE connection and a new connection via CCID is started, the card access via BLE is blocked. Also the other way around: If there is an active CCID connection and a new connection via BLE is started, the card access via CCID is blocked.
Improvement of encryption algorithm: using CCM instead of ECB
Improvement of Session Key management
Improved protocol downgrade protection
Implementation of „Force 256bit mode“ so that AirID cannot be forced down to communicate with AES 128bit encryption. Force 256bit mode is enabled per default
Performance related changes:
Reduction of power consumption
Power down the smart card on out-of-coverage
Have a higher connection interval when there is no BLE traffic for some time
Correct rates in USB CCID descriptor
Improved Android compatibility (discovering of our GATT service)
Usability related changes:
Smart card icon on AirID display blinks when the card is powered on
New setting menu item „USB card reader mode“ so that the USB cardreader mode can be enabled by default when USB is connected