Skip to content

Instantly share code, notes, and snippets.

@oldmud0
Created June 27, 2024 19:09
Show Gist options
  • Save oldmud0/4d8b50cc6fdba0dc301ac78f4f05082d to your computer and use it in GitHub Desktop.
Save oldmud0/4d8b50cc6fdba0dc301ac78f4f05082d to your computer and use it in GitHub Desktop.
Kodak/Prinics Zink photo printer reverse engineering overview

I don't have much to share, since I only spent about an hour on it, but here is an overview of what it would take to interface a Prinics-based printer with third-party software. I reverse engineered com.prinics.kodak.photoprinter to get some information about the protocol. Some older portable photo printers used Bluetooth OBEX to stay widely compatible with as many devices as possible, including flip phones, but it seems that this is no longer the case.

These printers do not support any standard printer protocols. Instead, they use a custom protocol that is transported through Bluetooth Serial Port Profile (SPP), a Wi-Fi ad-hoc access point (app listens on port 56065), or Wi-Fi Direct (app connects to peer on port 56067).

Each message consists of:

  • u8 - msg id
  • u8 - unknown
  • u8 - unknown
  • u8 - padding (0)
  • u32be - additional data length (can be 0)
  • u8[...] - additional data

In other words, a message is at least 8 bytes long and has an unbounded maximum size - although in practice the max is probably either 2048 or 4096.

Here are some packets that I found:

  • 100, 1, 0 - sent on first connect
  • 3, 0, 0 - sent on error
  • 2, 1, 37
  • 82, 0, 0 - begin print?
  • 1, 0, 0
  • 7, ?, 0
  • 84, 0, 0
  • 11, 0, 0
  • 101, 1, 0
  • 11, 0, 0
  • 18, ?, ? - variable message
  • 9, ?, ? - variable message

For one of the messages, it's expected to be 128 bytes:

  • 0-52: binary
  • 53-84: us ascii
  • 85-127: us ascii

That is all I have time for right now.

@FerreiraPablo
Copy link

Any update on this? Haven't done any progress myself.

@oldmud0
Copy link
Author

oldmud0 commented Jul 27, 2024

I haven't worked on this any more, but if there is sufficient interest I can investigate more to open the device up to makers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment