James's first 3D printer — a Bambu Lab H2C Vortek Ultimate — arrived two days early. First 48 hours: six prints, one account fight, and a local API. The log:
Setup
H2C on a temporary bench while its BIQU Panda Station cabinet finishes shipping (it moves over — and gets a full recalibration — when the stand lands). Commissioning by Bambu's book: shipping screws out, first calibration before pulling the bed foam, induction rack calibrated empty, then hotends in and Read All. All-0.4 induction rack on the right, 0.4 standard on the left, one AMS 2 Pro wired. Everything printed the first two days ran on one borrowed spool of vacuum-sealed matte grey PLA.
The Prints
| Workflow learned | |
|---|---|
| Benchy — clean hull, bridges, chimney; cosmetic stringing only | Built-in files |
| Slim purge bin (213 g) — the rear chute ejects onto the floor otherwise | MakerWorld → Open in Studio |
| Gridfinity 2×2 baseplate + bins — snug on-spec fit, dimensional accuracy cleared with zero tuning | Parametric generator → STL import |
| Cable organizers + large bag clips, batch plates | Clone + auto-arrange (print 1, verify, then batch) |
| First Bisley 4×5 baseplate — fit the drawer with margin | Production |
One batch lesson: a corner part lost adhesion and spaghettied while its 19 siblings printed fine. Check the camera ten minutes in, avoid plate corners, keep AI spaghetti detection on.
What Fought Back: Accounts, Not Hardware
- LAN mode across Wi-Fi networks fails quietly — Studio error -1040, retried forever.
- Phone SSO silently created a phantom account (
user_213312131) and bound the printer to it; Studio, on the real account, saw an empty device list. - The fix: one deliberate email+password account, same login everywhere, printer bound once.
Bisley Drawers → Gridfinity
Drawer interiors (9.21" × 14.76" ≈ 234 × 375 mm) = a 5×8 grid, printed as two 4×5 plates (an 8-wide plate exceeds the bed). Heights: shallow top drawers get 2u bins or plain trays, middle drawers 5u (6u sits flush and jams), bottom drawers 12u. Foam liners come out — plates want bare steel.
Local API
The printer is now scriptable. On current H2 firmware, local MQTT is gated behind LAN Only mode + Developer Mode (the toggle is greyed until LAN Only is on). Real trade: cloud, Handy, and MakerWorld one-click printing all die. In exchange: MQTT over TLS on port 8883, user bblp, password = the printer's access code. Subscribe to device/<serial>/report, request a pushall, and everything the Studio Device tab knows streams back — state, progress, layers, temps, HMS errors, per-slot AMS contents, even the AMS's internal humidity. Pause/resume/speed/G-code ride the same channel.
A ~60-line paho-mqtt smoke test verified the path first try: gcode_state: FINISH, 59/59 layers from the baseplate that had just wrapped. See OpenBambuAPI for topics and payloads.
Verdicts
- The machine is better than its onboarding. Hardware and print quality were flawless; the account layer cost more time than every mechanical step combined.
- Materials match jobs. PLA for bins, PETG for structural/springs, PETG-CF for rack parts. The AMS stacking bracket waits for PETG rather than shipping in on-hand PLA.
- Local MQTT beats the cloud around it. Everything the apps know, no account maze.
In the queue: Bisley plates and bins (PLA truck), "Print Funland" two-color bag clips (PETG truck), the dual-AMS stacking bracket, and DGX Spark rack parts in PETG-CF through a tungsten carbide hotend — printed before the Track Switch installs, since the switch disables the external spool path CF feeds from. Next update when the drawers are gridded and the AMS stack goes vertical.