Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dymo LabelManager Wireless PNP protocol
- as Dymo has a labelmanager wireless it would be nice to print to it in a very simple way.
- How to reverse engineer this protocol:
- Create with dymo label 1 label with all letters (A-Z) and numbers (0-9).
- Print this label and sniff the network.
- Create with dymo label 1 label without letters
- Print this label and sniff the network.
- After printing we get the following:
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- 1b 43 00 1b 44 00 16 16 16 16 16 16 16 16 16 16 .C..D...........
- 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 ................
- 16 16 16 16 16 16 16 1b 44 00 16 16 16 16 16 16 ........D.......
- 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 ................
- 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 ................
- 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 ................
- 16 16 16 16 1b 42 0e 1b 44 01 16 10 16 1e 1b 44 .....B..D......D
- 02 16 1f 80 16 1f e0 16 1f fc 16 1f ff 1b 44 03 ..............D.
- 16 03 ff c0 1b 42 0f 1b 44 02 16 ff f8 16 1f fe .....B..D.......
- 1b 44 03 16 07 ff c0 16 03 ff f0 16 03 ff fc 1b .D..............
- 44 04 16 03 ff ff 80 16 03 f3 ff e0 16 03 f0 7f D...............
- f8 16 03 f0 1f ff 1b 44 05 16 03 f0 03 ff c0 16 .......D........
- 03 f0 00 ff f8 16 03 f0 00 3f f8 16 03 f0 00 07 .........?......
- f8 16 03 f0 00 3f f8 16 03 f0 00 ff f8 16 03 f0 .....?..........
- 07 ff f8 16 03 f0 3f ff f8 16 03 f0 ff ff f8 16 ......?.........
- 03 f7 ff ff e0 16 03 ff ff ff 80 1b 44 04 16 03 ............D...
- ff ff fc 16 07 ff ff f0 16 1f ff ff 80 1b 44 03 ..............D.
- 16 ff ff fc 1b 42 0e 1b 44 04 16 07 ff ff f0 16 .....B..D.......
- 1f ff ff 80 1b 44 03 16 1f ff fe 16 1f ff f0 16 .....D..........
- 1f ff 80 1b 44 02 16 1f fe 16 1f f0 16 1f c0 1b ....D...........
- 44 01 16 1e 16 10 1b 44 00 16 16 16 16 16 16 16 D......D........
- 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 ................
- and much more.
- Time to write this out in lines:
- 1b 43 00
- 1b 44 00 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
- This is the 'A'
- 1b 42 0e
- 1b 44 01 16 10 16 1e
- 1b 44 02 16 1f 80 16 1f e0 16 1f fc 16 1f ff
- 1b 44 03 16 03 ff c0
- 1b 42 0f
- 1b 44 02 16 ff f8 16 1f fe
- 1b 44 03 16 07 ff c0 16 03 ff f0 16 03 ff fc
- 1b 44 04 16 03 ff ff 80 16 03 f3 ff e0 16 03 f0 7f f8 16 03 f0 1f ff
- 1b 44 05 16 03 f0 03 ff c0 16 03 f0 00 ff f8 16 03 f0 00 3f f8 16 03 f0 00 07 f8 16 03 f0 00 3f f8 16 03 f0 00 ff f8 16 03 f0 07 ff f8 16 03 f0 3f ff f8 16 03 f0 ff ff f8 16 03 f7 ff ff e0 16 03 ff ff ff 80
- 1b 44 04 16 03 ff ff fc 16 07 ff ff f0 16 1f ff ff 80
- 1b 44 03 16 ff ff fc
- 1b 42 0e
- 1b 44 04 16 07 ff ff f0 16 1f ff ff 80
- 1b 44 03 16 1f ff fe 16 1f ff f0 16 1f ff 80
- 1b 44 02 16 1f fe 16 1f f0 16 1f c0
- 1b 44 01 16 1e 16 10
- This is the 'B'
- 1b 44 00 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
- 1b 44 06 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f ff ff ff ff f8 16 1f 80 03 f0 01 f8 16 1f 80 03 f0 01 f8 16 1f 80 03 f0 01
- f8 16 1f 80 03 f0 01 f8 16 1f 80 03 f0 01 f8 16 1f 80 03 f0 01 f8 16 1f 80 07 f8 01 f8 16 1f 80 07 f8 03 f8 16 1f c0 0f fc 03 f8 16 1f c0 1f bf 07 f8 16 1f e0 1f bf ff f8 16 1f f0 7f 1f ff f0 16 0f ff ff 1f ff f0 16 0f ff fe 0f ff e0 16
- 0f ff fe 07 ff e0 16 07 ff fc 07 ff c0 16 03 ff f8 01 ff 80
- 1b 44 05 16 01 ff f0 00 7e
- 1b 42 0f
- 1b 44 02 16 ff e0 16 3f 80
- Mmm that's almost too easy.
- 1b 44 00 16 16 16.. is a space, which probably means that 16 is 'newline' and that it feeds to the next line of pixels.
- Some thoughts:
- 1b 44 04 16 03 ff ff 80 16 03 f3 ff e0 16 03 f0 7f f8 16 03 f0 1f ff
- ^^ ^^ ^^ ^^
- 1b 44 03 16 07 ff c0 16 03 ff f0 16 03 ff fc
- ^^ ^^ ^^
- Thanks, now we know that after 1b 44 the next number gives out how much bytes there are to describe the pixels. It wouldn't be some totally simple pixelart right?
- Let's test it (only reading the 1b 44 xx lines and splitting every line at byte 16 and than print hex2bin and replace 0 with ' ' for readability):
- character A:
- 1
- 1111
- 111111
- 11111111
- 11111111111
- 1111111111111
- 111111111111
- 1111111111111
- 111111111111
- 1111111111111
- 11111111111111
- 1111111111111111
- 1111111111111111111
- 111111 1111111111111
- 111111 111111111111
- 111111 1111111111111
- 111111 111111111111
- 111111 1111111111111
- 111111 11111111111
- 111111 11111111
- 111111 11111111111
- 111111 1111111111111
- 111111 1111111111111111
- 111111 1111111111111111111
- 111111 111111111111111111111
- 111111 1111111111111111111111
- 111111111111111111111111111
- 111111111111111111111111
- 11111111111111111111111
- 1111111111111111111111
- 1111111111111111111111
- 11111111111111111111111
- 1111111111111111111111
- 11111111111111111111
- 11111111111111111
- 11111111111111
- 111111111111
- 111111111
- 1111111
- 1111
- 1
- there is something funny. It should be aligned a little bit nicer. What does 1b 42 do?
- 1b 42 0e
- [..] leg of 'A'
- 1b 42 0f
- [..] main body of 'A'
- 1b 42 0e
- [..] leg of 'A'
- That would mean that 1b 42 xx is the ident from the left? Let's test it by adding 8 spaces in front:
- 1
- 1111
- 111111
- 11111111
- 11111111111
- 1111111111111
- 111111111111
- 1111111111111
- 111111111111
- 1111111111111
- 11111111111111
- 1111111111111111
- 1111111111111111111
- 111111 1111111111111
- 111111 111111111111
- 111111 1111111111111
- 111111 111111111111
- 111111 1111111111111
- 111111 11111111111
- 111111 11111111
- 111111 11111111111
- 111111 1111111111111
- 111111 1111111111111111
- 111111 1111111111111111111
- 111111 111111111111111111111
- 111111 1111111111111111111111
- 111111111111111111111111111
- 111111111111111111111111
- 11111111111111111111111
- 1111111111111111111111
- 1111111111111111111111
- 11111111111111111111111
- 1111111111111111111111
- 11111111111111111111
- 11111111111111111
- 11111111111111
- 111111111111
- 111111111
- 1111111
- 1111
- 1
- That's it.
- To recap:
- 1b 43 xx is only at the start, probably some tape identifier.
- 1b 45 and
- 1b 51 are at the end. It will cut after one of these commands. (the wireless PnP is equiped with a autocutter).
- 1b 42 xx is the ident. For 9mm tape it starts at 0d, as the max tape is 24mm it would be about 0 there. Have to test it.
- 1b 44 xx 16 <data> 16 <data> is how to transfer the bitmap and with xx you define the width.
- That was a nice simple protocol.
- Now I can make my embedded stuff print out on those labels in an automated process without installing cups on a 'fat' machine. Thank you Dymo.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement