Skip to content

thermal-label/labelife

Repository files navigation

@thermal-label/labelife

TypeScript-first driver for the LabeLife / Aimo / Quyin family of ~95 thermal label printers — Phomemo, Munbyn, Wagtail, 123inkt LW650XL PRO and friends — over Bluetooth-SPP, BLE GATT, TCP-9100, and (when VID/PIDs surface) USB.

CI codecov npm core npm node npm web License: MIT

Two wire-protocol families coexist in this catalog:

  • TSPL II with vendor LZO BITMAP modes 3 / 4 and SSS<KEY>:<VALUE> status framing — 76 models across three sub-engines (tspl-c1, tspl-l3, tspl-m3).
  • Vendor-extended ESC/POS with 1F 11 xx opcodes and an optional LZO-compressed raster path — 21 models across three sub-engines (escpos-a, escpos-y0, escpos-p1).

The driver is transport-unaware: bring any Transport from @thermal-label/transport and the same encoder produces correct wire bytes for whichever sub-engine your device uses.

Install

pnpm add @thermal-label/labelife-node    # Node USB / TCP / Serial / Bluetooth-SPP
pnpm add @thermal-label/labelife-web     # Browser WebUSB / Web Serial / Web Bluetooth

Quick example (Node)

Most labelife printers are classic-Bluetooth — pair the printer at the OS level and the SPP channel surfaces as a serial port (/dev/rfcomm0, /dev/tty.<Name>-SPPDev, COMx):

import { LabelifeDiscovery, MEDIA } from '@thermal-label/labelife-node';

const discovery = new LabelifeDiscovery();
const printer = await discovery.openPrinter({
  serialPath: '/dev/rfcomm0',
  deviceKey: 'D521_PRO',
});
try {
  await printer.print(image, MEDIA.DIE_CUT_50X30);
} finally {
  await printer.close();
}

For a Wi-Fi-capable -WF model (post-provisioning), use TCP-9100:

const printer = await discovery.openPrinter({
  host: '192.168.1.42',
  deviceKey: 'PM_344_WF',
});

Quick example (Browser)

import { requestPrinterBluetooth, MEDIA } from '@thermal-label/labelife-web';

// BLE-Wi-Fi models (PM-344-WF, PM-241-WF, AM-242-WF, …)
const printer = await requestPrinterBluetooth('PM_344_WF');
try {
  await printer.print(image, MEDIA.DIE_CUT_50X30);
} finally {
  await printer.close();
}

Or via Web Serial for OS-paired Bluetooth-SPP / USB-serial bridges:

import { requestPrinterSerial } from '@thermal-label/labelife-web';

const printer = await requestPrinterSerial({ deviceKey: 'D521_PRO' });

Supported hardware

95 devices — 0 verified · 0 partial · 0 broken · 95 untested

Model Key USB PID Transports Status
6XL Pro K_6XL_PRO BT SPP, USB ⏳ untested
650 K_650 BT SPP, USB ⏳ untested
660 K_660 BT SPP, USB ⏳ untested
A64M A64M BT SPP, USB ⏳ untested
A641M A641M BT SPP, USB ⏳ untested
A646 A646 BT SPP, USB ⏳ untested
AM-242-BT AM_242_BT BT SPP, USB ⏳ untested
AM-242-WF AM_242_WF BT LE, TCP, USB ⏳ untested
AM-243-BT AM_243_BT BT SPP, USB ⏳ untested
AM-243-WF AM_243_WF BT LE, TCP, USB ⏳ untested
CS 60pro 300BT CS_60PRO_300BT BT SPP, USB ⏳ untested
CT200 CT200 BT SPP, USB ⏳ untested
CT200Pro CT200_PRO BT SPP, USB ⏳ untested
CT310 CT310 BT SPP, USB ⏳ untested
CT310Pro CT310_PRO BT SPP, USB ⏳ untested
CT610 CT610 BT SPP, USB ⏳ untested
CT610-BT CT610_BT BT SPP, USB ⏳ untested
D420BT D420BT BT SPP, USB ⏳ untested
D420D D420D BT SPP, USB ⏳ untested
D421R D421R BT SPP, USB ⏳ untested
D422S D422S BT SPP, USB ⏳ untested
D450 D450 BT SPP, USB ⏳ untested
D450BT-Z D450BT_Z BT SPP, USB ⏳ untested
D520 Pro D520_PRO BT SPP, USB ⏳ untested
D520BT D520BT BT SPP, USB ⏳ untested
D520BT-Z D520BT_Z BT SPP, USB ⏳ untested
D520W D520W BT SPP, USB ⏳ untested
D521 Pro D521_PRO BT SPP, USB ⏳ untested
D530 Pro D530_PRO BT SPP, USB ⏳ untested
D530BT D530BT BT SPP, USB ⏳ untested
D550 Plus D550_PLUS BT SPP, USB ⏳ untested
D550 Pro D550_PRO BT SPP, USB ⏳ untested
D550BT D550BT BT SPP, USB ⏳ untested
D560 Plus D560_PLUS BT SPP, USB ⏳ untested
DS-50P DS_50P BT SPP, USB ⏳ untested
GFLP801 GFLP801 BT SPP, USB ⏳ untested
GFLP806 GFLP806 BT SPP, USB ⏳ untested
ITPP 129 ITPP_129 BT SPP, USB ⏳ untested
ITPP 129B ITPP_129B BT SPP, USB ⏳ untested
JK01-R JK01_R BT SPP ⏳ untested
JP01-S JP01_S BT SPP ⏳ untested
JY-2024 JY_2024 BT SPP, USB ⏳ untested
KT-320S KT_320S BT SPP ⏳ untested
KT260P KT260P BT SPP ⏳ untested
KT320 KT320 BT SPP ⏳ untested
KT600 KT600 BT SPP ⏳ untested
LK-01 LK_01 BT SPP ⏳ untested
LW650XL PRO LW650XL_PRO BT SPP, USB ⏳ untested
M08F M08F BT SPP ⏳ untested
M660 M660 BT SPP ⏳ untested
M831 M831 BT SPP ⏳ untested
M832 M832 BT SPP ⏳ untested
Munbyn ITPP129S MUNBYN_ITPP129S BT LE, TCP, USB ⏳ untested
P780BT PRO P780BT_PRO BT SPP ⏳ untested
P831 P831 BT SPP ⏳ untested
P831Max P831_MAX BT SPP ⏳ untested
P833 P833 BT SPP ⏳ untested
PL70 PL70 BT SPP, USB ⏳ untested
PM-241-BT PM_241_BT BT SPP, USB ⏳ untested
PM-241-WF PM_241_WF BT LE, TCP, USB ⏳ untested
PM-241Z-BT PM_241Z_BT BT SPP, USB ⏳ untested
PM-245-BT PM_245_BT BT SPP, USB ⏳ untested
PM-246S-BT PM_246S_BT BT SPP, USB ⏳ untested
PM-246S-WF PM_246S_WF BT LE, TCP, USB ⏳ untested
PM-247-WF PM_247_WF BT LE, TCP, USB ⏳ untested
PM-248-Pro PM_248_PRO BT SPP, USB ⏳ untested
PM-248-WF PM_248_WF BT LE, TCP, USB ⏳ untested
PM-249-BT PM_249_BT BT SPP, USB ⏳ untested
PM-249-WF PM_249_WF BT LE, TCP, USB ⏳ untested
PM-344-WF PM_344_WF BT LE, TCP, USB ⏳ untested
PM-2410-BT PM_2410_BT BT SPP, USB ⏳ untested
PM-2411-BT PM_2411_BT BT SPP, USB ⏳ untested
PM-2415-BT PM_2415_BT BT SPP, USB ⏳ untested
PM64Air PM64AIR BT SPP, USB ⏳ untested
PM64D PM64D BT SPP, USB ⏳ untested
Q302 Q302 BT SPP ⏳ untested
QF238B QF238B BT SPP, USB ⏳ untested
QF368B QF368B BT SPP, USB ⏳ untested
QR-386A QR_386A BT SPP, USB ⏳ untested
S821 S821 BT SPP ⏳ untested
S821BT S821BT BT SPP ⏳ untested
T08A T08A BT SPP ⏳ untested
T08FS T08FS BT SPP ⏳ untested
T200 T200 BT SPP, USB ⏳ untested
T200Pro T200_PRO BT SPP, USB ⏳ untested
T300 T300 BT SPP, USB ⏳ untested
T310 T310 BT SPP, USB ⏳ untested
T330 T330 BT SPP, USB ⏳ untested
T350 T350 BT SPP, USB ⏳ untested
T410 T410 BT SPP, USB ⏳ untested
T430 T430 BT SPP, USB ⏳ untested
T800 T800 BT SPP, USB ⏳ untested
T831 T831 BT SPP ⏳ untested
Wagtail CT-200 WAGTAIL_CT_200 BT SPP, USB ⏳ untested
Wagtail CT-310 WAGTAIL_CT_310 BT SPP, USB ⏳ untested

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.

Documentation

Full docs at https://thermal-label.github.io/labelife/.

License

MIT — see LICENSE.

About

TypeScript driver for the LabeLife app printer family — ~95 Aimo/Quyin OEM thermal label printers (Phomemo, Munbyn, Wagtail, 123inkt LW650XL PRO, …) over TSPL II & vendor ESC/POS on Bluetooth, BLE, TCP-9100, and USB.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors