@thermal-label/marklife-node
v0.1.0
Published
Node.js driver (Bluetooth SPP, USB) for the Marklife / Deli / AbleMark family of thermal label printers
Maintainers
Readme
@thermal-label/marklife-node
Node.js driver for the Marklife / Deli / FeiOou AbleMark family of
thermal label printers and their whitelabels, over any Transport
from @thermal-label/transport:
Bluetooth SPP through the OS-paired RFCOMM port, or USB Printer-class
on the P12 and P15.
Install
pnpm add @thermal-label/marklife-nodeQuick start
Pair the printer at the OS level; the SPP channel surfaces as a
serial port (/dev/rfcomm0, /dev/tty.<Name>-SPPDev, COMx).
import { MarklifeDiscovery, MEDIA } from '@thermal-label/marklife-node';
const printer = await new MarklifeDiscovery().openBluetoothSpp({
serialPath: '/dev/rfcomm0',
deviceKey: 'S8',
});
try {
await printer.print(image, MEDIA.GAP_50X30);
} finally {
await printer.close();
}Or construct MarklifePrinter over a transport you already hold:
import { UsbTransport } from '@thermal-label/transport/node';
import { DEVICES } from '@thermal-label/marklife-core';
import { MarklifePrinter } from '@thermal-label/marklife-node';
const printer = new MarklifePrinter(DEVICES.P12, await UsbTransport.open(0x09c7, 0x0011), 'usb');print() needs a media descriptor — no chassis reports its media —
and feeds the job in registry-sized packets with the pause the
firmware needs, on USB and SPP alike.
Documentation
Supported hardware
28 devices — 3 verified · 0 partial · 19 expected · 5 unsupported · 1 unverified
| Model | Key | Protocol | Transports | Status |
| --- | --- | --- | --- | --- |
| A1 | A1 | L11 | BT SPP, BT LE | 🔄 expected |
| BARABOGOP12 | BARABOGOP12 | L11 | BT SPP, BT LE | 🔄 expected |
| D100 | D100 | JBIG | BT SPP, BT LE | ❌ unsupported |
| D210 | D210 | YXQ | BT SPP, BT LE | 🔄 expected |
| ewtto ET-Z0535 | ETZ0535 | YXQ | BT SPP, BT LE | 🔄 expected |
| Jammuk S2 | JAMMUK_S2 | YXQ | BT SPP, BT LE | 🔄 expected |
| L100 | L100_BY_X4 | JBIG | BT SPP, BT LE | ❌ unsupported |
| LP15 | LP15 | L11 | BT SPP, BT LE | 🔄 expected |
| LP25 | LP25_BY_P12 | L11 | BT SPP, BT LE | 🔄 expected |
| LP90 | LP90 | L11 | BT SPP, BT LE | 🔄 expected |
| LPW40 | LPW40 | YXQ | BT SPP, BT LE | 🔄 expected |
| M50 | M50_BY_S2 | YXQ | BT SPP, BT LE | 🔄 expected |
| M57 | M57_BY_P50 | YXQ | BT SPP, BT LE | 🔄 expected |
| M60 | M60_BY_X2 | YXQ | BT SPP, BT LE | 🔄 expected |
| P12 | P12 | L11 | USB, BT SPP, BT LE | ✅ verified |
| P15 | P15 | L11 | USB, BT SPP, BT LE | ✅ verified |
| P15R | P15R | L11 | BT SPP, BT LE | 🔄 expected |
| P50 | P50 | YXQ | BT SPP, BT LE | 🔄 expected |
| R15 | R15 | L11 | BT SPP, BT LE | 🔄 expected |
| S2 | S2 | YXQ | BT SPP, BT LE | ✅ verified |
| S8 | S8 | YXQ | BT SPP, BT LE | 🔄 expected |
| T2 | T2 | YXQ | BT SPP, BT LE | 🔄 expected |
| T3 | T3 | CPCL | BT SPP, BT LE | ⏳ unverified |
| U210 | U210_BY_D210 | JBIG | BT SPP, BT LE | ❌ unsupported |
| X2 | X2 | YXQ | BT SPP, BT LE | 🔄 expected |
| X2 (BLE) | X2_BLE | YXQ | BT LE | 🔄 expected |
| X4 | X4 | JBIG | BT SPP, BT LE | ❌ unsupported |
| X8 | X8 | JBIG | BT SPP, BT LE | ❌ unsupported |
Click any model to open its detail page on the docs site, where engines, supported media, and verification reports live. The same data backs the interactive cross-driver table.
License
MIT
