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.

Revisions

  1. oldmud0 created this gist Jun 27, 2024.
    36 changes: 36 additions & 0 deletions zink.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,36 @@
    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.