ZebraZD410 - BLE Write Without Response on iOS Fails

Tags: 

Hello,

I am having trouble sending ZPL label data using "Write Value without Response" to characteristic 38EB4A82-C570-11E3-9507-0002A5D5C51B over BLE on a ZebraZD410 printer. I am using iOS's CoreBluetooth framework to communicate with the printer.

According to Zebra's documentation here: https://www.zebra.com/content/dam/zebra/software/en/application-notes/Ap..., the BLE characteristic 38EB4A82-C570-11E3-9507-0002A5D5C51B supports "Write Value with Response" and "Write Value without Response"

My iOS application can send data using "Write Value with Response" without a problem, but using a "reliable" transfer method results in **very** slow print speeds.

If I instruct iOS to send data using "Write Value without Response", I get a warning with the following message:

---------
CBCharacteristic: 0x282668b40, UUID = 38EB4A82-C570-11E3-9507-0002A5D5C51B, properties = 0x8, value = (null), notifying = NO> does not specify the "Write Without Response" property - ignoring response-less write
---------

This warning leads me to believe that the ZebraZD410 printer is incorrectly broadcasting the supported write capabilities during characteristic discovery, and iOS prohibits transferring data using an "unsupported" method.

Is there any guidance?

Steven Si
What is the firmware version

What is the firmware version on this ZD410? Could you upgrade the firmware to the latest to see if the issue still exists? The latest firmware can be downloaded from here.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Eli Harris
Steven Si, it appears we are

Steven Si, it appears we are on the latest firmware version - 6.3 w/ Bluetooth version 1.4.1.0. The problem appears to be the Zebra ZD410 is incorrectly broadcasting characteristic properties.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Eli Harris
According to the Bluetooth

If we reference section 3.3.1.1 of the Bluetooth Spec under "Characteristic Properties", an ATT will define properties for each characteristic.

The current properties set for characteristic 38EB4A82-C570-11E3-9507-0002A5D5C51B is 0x08, which is defined as "Write With Response".

The Bluetooth spec indicates a value of 0x04 can be set to enable "Write Without Response" for a characteristic, but since the printer should support both 0x08 and 0x04, a mask can be applied by performing a bitwise operation: 0x08 | 0x04 = 0xC

The ZebraZD410 printer needs to be broadcasting 0xC (if I calculated right :D) as the permission set instead of 0x8 for characteristic 38EB4A82-C570-11E3-9507-0002A5D5C51B

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Steven Si
Hi Eli,

Hi Eli,

After chasing down internally, unfortunately it was confirmed that the WriteWithoutResponse is not supported with ZD410 printers, due to the lack of a mechanism to monitor and prevent the data loss. The WriteWithoutResponse is only supported in a very few printer models at this moment.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Eli Harris
Steven,

Steven,

Monitoring data loss will never be possible as that's the role of "Write with Response". This is the 'TCP' of Bluetooth.

We have "Write without Response" working amazing on Android devices. It turns out the Android OS will ignore permissions assigned to characteristics and will write anyways.

Your printers are more than capable of handling this write permission. It's quite incredible how much the print speed is improved. The only requirement to use it efficiently is to introduce a negligible 20ms delay between each write operation.

Would there ever be the possibility of pushing a firmware update?

Best,

Eli

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Steven Si
Hi Eli, To support

Hi Eli, To support WriteWithResponse, it requires the implementation of a higher-level protocol, which is a part of the credit-based flow control implementation. This credit flow control was not implemented in ZD410 model, which is an older model with an older Bluetooth radio chipset. There is no plan to port the credit flow control back to ZD410 model at this moment.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments