OneFinity CNC Controller Firmware Changelog =========================================== ## Unreleased (community fork) General-use additions on top of upstream OneFinity firmware. ### UI - V09 redesign: 4-tab top header (Control / Program / Console / Settings) replaces the legacy side menu. - Control: redesigned DRO with per-axis offset + zero + home actions, jog grid with consistent button sizing across kiosk and tablet, status strip with live state / velocity / spindle. - Program: dedicated tab for run / pause / stop, file browser, toolpath preview. - Console: MDI shell, message log, indicators. - Settings: rail-driven inner pages so each section is its own focused panel rather than one long scroll. - Tablet mode (`?tablet=1`) pins the UI to 1920x1080 and scales it to fit the actual viewport. - Kiosk mode (`?kiosk=1`, auto on localhost): tighter layout for the controller's onboard 1366x768 screen. - Font Awesome 6 throughout (replaces FA4). - Fix: stop clobbering motor settings while the user is editing them. - Fix: keep jog grid visible during jog/home/probe/MDI activity. - Fix: opaque dark canvas for path-viewer (no flash through page background). - Fix: OrbitControls now uses non-passive wheel/touch listeners so it can suppress page panning while interacting with the 3D viewer. - Fix: macros tab no longer renders placeholder color stripes for `#dedede`/`#fff`-only macros. - Fix: hide the X cursor in kiosk mode (touchscreen). - Fix: chromium 72 mime + flex-gap fallbacks (some kiosk Pis ship with that older browser build). - Fix: Vue 1 async batching disabled so reactive writes from `hashchange` listeners propagate synchronously. ### Boot / install - Cold-boot optimisations cutting bbctrl listen latency by ~8s on the Pi (mask sysstat, replace dphys-swapfile with an fstab swap entry, lazy-load `camotics.gplan`, `bbserial-rebind.service` with explicit `Before=bbctrl.service`). - `install.sh` now ships these with firmware updates. - `bbctrl.Trace` + `/api/diag/timing` for measuring startup, with a UI-side `restart-timing.js` client that POSTs browser marks. - `Camera.py` switched from deprecated `@web.asynchronous` to `async def` so the streaming endpoint works on newer Tornado. - `Log.py` tolerates missing rotated log files on startup (concurrent logrotate runs from `/etc/cron.reboot` no longer crash bbctrl). ### Build / tooling - `.pi/BUILD.md`: end-to-end macOS dev workflow, deploy paths, troubleshooting. - `.pi/Dockerfile.gplan` + `build-gplan.sh`: rebuild `gplan.so` from source on Raspbian Stretch (Bullseye is too new). - `deploy.sh` dispatcher with `local`, `hardware`, `prod` modes. - `backup/onefinity-backup.sh`: dd-based whole-card backup/restore with shrink/expand support. - `Makefile`: ensure trailing newlines between concatenated pug templates so Pug doesn't glue file boundaries together. ## v1.0.8 - Fixed chatter and lost steps issues (most commonly seen by Fusion users), re-enabled support for G61, G61.1, G64. - Fixed 3d preview on Safari-based web browsers (MacOS & iOS) - Made it less likely for a user to upload a non-gcode file - Fixed problems with UI freezing when attempting to process a non-gcode file - Simplified error popup to make it less confusing - Improved error messages for most internal errors ## v1.0.7 - Cleaned up UI layout a bit on the main screen - Enabled auto expansion of partition and file system to fill SD card on first boot - Added probe continuity test before probing (pop-up dialog) - Added a popup after probing, reminding the user to put away the probe - Lowered default probe seek speed - Fixed file drop-down menu showing old files - Added file system watcher for uploaded files - Improved support for large gcode files, improves performance on Raspi - Fixed a bug where the UI could become unresponsive at boot, or when uploading the first gcode file - Changed default max-deviation to 0.001 to reduce issues with chattering while cutting arcs and circles - Hides ratpoison (window manager) message during boot up - Disabled G61, G61.1, G64 gcodes until the root cause of circle chatter is identified and fixed - Increased icon size on the main GUI - Improved version comparison logic for handling public beta releases in the future - Changed default max-jerk to 1000 for X/Y axes - Changed default idle current to 1A - Force-set some critical configuration values to help with reliability - Metric units only for junction-accel and max-deviation - Rewrote the homing procedure to be more consistent - Small improvements to the stall homing procedure - Fixed error messages in the console (webgl) - Fixed styling bug with error dialog - Added a setting to allow enable/disable of probing safety prompts ## v1.0.6 - Tweaked stall homing procedure to clear stepper stall condition before homing - Modified motor homing parameters (8 microsteps, 1.688 m/min search velocity, 2 stall volts, 1 stall current, 1.5mm zero backoff) - Added pop up message while loading/simulating file on upload - Decreased max velocity in default settings for X and Y axes - Restored jerk to 1000 on all axes - Fixed issue with default units not displaying on Control page (thanks to Robin Goldstone) ## v1.0.5 - Changed the jog commands so that save/restore modal states are not used to avoid situation where spindle/loads could turn back on if the stop button was used instead of the M5/M9 gcode commands. - Added tool path status to control page - Moved over/under/no-fit warnings to tool status from machine status - Added "home machine" pop up on start if the machine is not homed - Added confirmation for X0Y0 and Z0 buttons ## v1.0.4 - Fixed text sticking out of some dialog boxes - Added changes to PWR microcontroller to support new precharge circuitry on V3 of the PCB - Added a Shutdown button under the menu - Added confirmation dialog to shutdown - Fixed Reset Defaults for OneFinity settings - Probe buttons now turn green when probe input is active - Added defaults for both machinist and woodworker machines - Re-activated "Upgrade" button under Admin to grab updates directly from the web ## v1.0.3 - Changed upgrade scripts to point at OneFinity github repository - Upgrade function not yet fully implemented ## v1.0.2 - Initial release of customized OneFinity firmware - Includes GUI customizations, stall homing Note: This firmware was forked from version 0.4.14 of the Buildbotics firmware Buildbotics CNC Controller Firmware Changelog ============================================= ## v0.4.14 - Handle file uploads with '#' or '?' in the name. - Added "step mode" to Web based jogging. - Fixed touch screen Web jogging. ## v0.4.13 - Support for OMRON MX2 VFD. - Better error handling in WiFi configuration. - Fix open WiFi access. - Improved video camera performance. - Allow up to 4 camera clients at once. - Add axis bounds GCode variables ``#<_x_min>``, ``#<_x_max>``, etc. - Expose ``junction-accel`` planning parameter. - Fixed problem with manual firmware upload on OSX. - Ignore cameras that do not support MJPEG format video. ## v0.4.12 - Segments straddle arc in linearization. - Control max-arc-error with GCode var. - Implemented path modes G61, G61.1 & G64 with naive CAM and basic blending. - Log GCode messages to "Messages" tab. - Acknowledging a message on one browser clears it for all. - Automatically reload Web view when file changes. - Added ``config-screen`` script. Web based screen config to come later. - Suppress message popup with (MSG,# No popup message). - Show latest GCode message in ``Message`` field on CONTROL page. - Marked several GCodes supported in cheat sheet. - Solved planner lookahead failure for most reasonable cases. - Prevent cutting off distant parts of 3D path view. - Raised default ``latch-backoff`` to 100mm and ``zero-backoff`` to 5mm. - Added ``max-deviation`` option. - Fixed problem with GCode boolean expression parsing. #232. - Ensure 2uS step pulse width. ## v0.4.11 - Don't reset global offsets on M2. - Test shunt and show error on failure. - Report spindle status codes from Modbus. - Save more log files in bug report. - Fixed indicators low-side units. - Support for YL600, YL620 & YL620-A VFDs. - Move Modbus indicators to tool page. - Support for Sunfar E300 VFD. - Set GCODE_SCRIPT_PATH to support GCode file routines. - Fix pause bug introduced in v0.4.10. ## v0.4.10 - Fix demo password check - Fix bug were fast clicks could cause jog commands to arrive out of order. - Fix bug where planner position may not sync after jog. - Show power shutdown on indicators page. - Show all motors in shutdown when in power shutdown. - Improved GCode error messages. - Put controller into estop when in power shutdown. ## v0.4.9 - Enforce 6A per motor channel peak current limit. - Adjust config values above max or below min instead of resetting to default. ## v0.4.8 - Fixed log rotating. - Use systemd service instead of init.d. - Fix planner terminate. - Changed AVR serial interrupt priorites. - Increased AVR serial and command buffers. - Boost HDMI signal. - Rewrote RPi serial driver. - Automatically scale max CPU speed to reduce RPi temp. - Disable USB camera if RPi temperature above 80°C, back on at 75°C. - Respect offsets in canned cycle moves. #219 - Fixed G53 warning. - Fixed delayed offset update after M2 or M30 end of program. - Handle multiple consecutive config resets correctly. - Fixed log CPU usage problem introduced in v0.4.6. - Show RPi temp on indicators page. - Show red thermometer if RPi temp exceeds 80°C. ## v0.4.7 - Fix homing switch to motor channel mapping with non-standard axis order. - Added ``switch-debounce`` and ``switch-lockout`` config options. - Handle corrupt GCode simulation data correctly. - Fixes for exception logging. - Always limit motor max-velocity. #209 - Sync GCode and planner files to disk after write. - Added warning about reliability in a noisy environment on WiFi config page. - EStop on motor fault. - Fixed ETA line wrapping on Web interface. - Fixed zeroing with non-zero offset when unhomed. #211 - Handle file paths uploaded from Windows correctly. #212 - Don't retain estop state through reboot. - Log when RPi gets hot. - Support Modbus multi-write mode. - Added support for Nowforever VFDs. ## v0.4.6 - Fixed a rare ``Negative s-curve time`` error. - Don't allow manual axis homing when soft limits are not set. - Right click to enable camera crosshair. - Demo mode. - Limit idle-current to 2A. - Removed dangerous ``power-mode`` in favor of simpler ``enabled`` option. - Fixed bug where motor driver could fail to disabled during estop. - Restored estop text. ## v0.4.5 - Fix for random errors while running VFD. - Fix bug where planner would not continue after optional pause (M1). - Fix lockup on invalid no move probe G38.x. #183 - Fix zeroing homed axis after jog. - Fix VFD communication at higher baud rates (> 9600). #184 ## v0.4.4 - Write version to log file. - Write time to log file periodically. - Show simulation progress with or with out 3D view. - Synchronize file list between browsers. - Increased max simulation time to 24hrs. - Added button to download current GCode file. - Blink play button to indicate pause. - Many layout tweaks/improvements. - Don't abort simulations when system time changes. - Only allow one camera stream at a time. ## v0.4.2 - Suppress ``Auto-creating missing tool`` warning. - Prevent ``Stream is closed`` error. - Suppress ``WebGL not supported`` warning. - Fixed Web disconnect during simulation of large GCode. - Disable outputs on estop. - Improved switch debouncing for better homing. - Handle zero length dwell correctly. - Fixed problem with cached GCode file upload when file changed on disk. - Run simulation at low process priority. - Added ``Bug Report`` button to ``Admin`` -> ``General``. - Only render 3D view as needed to save CPU. - Prevent lockup due to browser causing out of memory condition. - Show error message when too large GCode upload fails. - Much faster 3D view loading. ## v0.4.1 - Fix toolpath view axes bug. - Added LASER intensity view. - Fixed reverse path planner bug. - Video size and path view controls persistent over browser reload. - Fixed time and progress bugs. - Added PWM rapid auto off feature for LASER/Plasma. - Added dynamic PWM for LASER/Plasma. - Added motor faults table to indicators page. - Emit error and indicate FAULT on axis for motor driver faults. - Display axis motor FAULT on LCD. - Fixed bug with rapid repeated unpause. ## v0.4.0 - Increased display precision of position and motor config. - Added support for 256 microstepping. - Smoother operation at 250k step rate by doubling clock as needed. - Indicators tab improvements. - Much improved camera support. - Camera hotpluging. - Move camera video to header. - Click to switch video size. - Automount/unmount USB drives. - Automatically install ``buildbotics.gc`` when no other GCode exists. - Preplan GCode and check for errors. - Display 3D view of program tool paths in browser. - Display accurate time remaining, ETA and progress during run. - Automatically collapse moves in planner which are too short in time. - Show IO status indicators on configuration pages. - Check that axis dimensions fit path plan dimensions. - Show machine working envelope in path plan viewer. - Don't reload browser view on reconnect unless controller has reloaded. - Increased max switch backoff search distance. - Major improvements for LASER raster GCodes. - Fixed major bug in command queuing. - Ignore Program Number O-Codes. - Improved planning of collinear line segments. - Allow PWM output up to 320kHz and no slower than 8Hz. ## v0.3.28 - Show step rate on motor configuration page. - Limit motor max-velocity such that step rate cannot exceed 250k. - Fixed deceleration bug at full 250k step rate. ## v0.3.27 - Fixed homing in imperial mode. ## v0.3.26 - Removed VFD test. - Show VFD status on configuration page. - Show VFD commands fail counts. - Marked some VFD types as beta. ## v0.3.25 - Error on home if max-soft-limit <= min-soft-limit + 1. #139 - Decrease boot time networking delay. - Default to US keyboard layout. #145 - Added configuration option to show metric or imperial units in browser. #74 - Implemented fine jogging control in Web interface. #147 ## v0.3.24 - Added unhome button on axis position popup. - Ignore soft limits of max <= min. - Fixed problem with restarting program in imperial units mode. - Handle GCode with infinite or very long loops correctly. - Fixed Huanyang spindle restart after stop. ## v0.3.23 - Fix for modbus read operation. - Finalized AC-Tech VFD support. - Preliminary FR-D700 VFD support. - Ignore leading zeros in modbus messages. - Handle older PWR firmwares. ## v0.3.22 - Fix position loss after program pause. #130 - Correctly handle disabled axes. - Fixed config checkbox not displaying defaulted enabled correctly. - Added Custom Modbus VFD programming. ## v0.3.21 - Implemented M70-M73 modal state save/restore. - Added support for modbus VFDs. - Start Huanyang spindle with out first pressing Start button on VFD. - Faster switching of large GCode files in Web. - Fixed reported gcode line off by one. - Disable MDI input while running. - Stabilized direction pin output during slow moves. ## v0.3.20 - Eliminated drift caused by miscounting half microsteps. - Fixed disappearing GCode in Web. - More efficient GCode scrolling with very large files. - Fully functional soft-limited jogging. - Added client and access-point Wifi configuration. - Fixed broken hostname Web redirect after change. - Split admin page -> General & Network. - Improved calculation of junction velocity limits. ## v0.3.19 - Fixed stopping problems. #127 - Fixed ``Negative s-curve time`` error. - Improved jogging with soft limits. - Added site favicon. - Fixed problems with offsets and imperial units. - Fixed ``All zero s-curve times`` caused by extremely short, non-zero moves. - Fixed position drift. ## v0.3.18 - Don't enable any tool by default. ## v0.3.17 - Fixed pausing fail near end of run bug. - Show "Upgrading firmware" when upgrading. - Log excessive pwr communication failures as errors. - Ensure we can still get out of non-idle cycles when there are errors. - Less frequent pwr variable updates. - Stop cancels seek and subsequent estop. - Fixed bug in AVR/Planner command synchronization. - Consistently display HOMING state during homing operation. - Homing zeros axis global offset. - Added zero all button. #126 - Separate "Auto" and "MDI" play/pause & stop buttons. #126 - Moved home all button. #126 - Display "Video camera not found." instead of broken image icon. - Show offset positions not absolute on LCD. - Don't change gcode lines while homing. - Don't change button states while homing. - Adding warning about power cyclying during an upgrade. - Reset planner on AVR errors. - Fixed pausing with short moves. - Corrected s-curve accel increasing jogging velocities. ## v0.3.16 - Fixed switch debounce bug. ## v0.3.15 - Suppress warning missing config.json warning after config reset. - Fixed EStop reboot loop. - Removed AVR unexpected reboot error. ## v0.3.14 - Fixed: Config fails silently after web disconnect #112 - Always reload the page after a disconnect. - Honor soft limits #111 (but not when jogging) - Limit switch going active while moving causes estop. #54 - Added more links to help page. - Fixed axis display on LCD. #122 - Added GCode cheat sheet. - Fixed LCD boot splash screen. #121 - Implemented tool change procedures and pause message box. #81 - Implemented program start and end procedures. ## v0.3.13 - Disable spindle and loads on stop. - Fixed several state transition (stop, pause, estop, etc.) problems. ## v0.3.12 - Updated DB25 M2 breakout diagram. - Enabled AVR watchdog. - Fixed problem with selecting newly uploaded file. - More thorough shutdown of stepper driver in estop. - Fixed spindle type specific options. - No more ``Unexpected AVR firmware reboot`` errors on estop clear. - Downgraded ``Machine alarmed - Command not processed`` errors to warnings. - Suppress unnecessary axis homing warnings. - More details for axis homing errors. - Support GCode messages e.g. (MSG, Hello World!) - Support programmed pauses. i.e. M0 ## v0.3.11 - Suppressed ``firmware rebooted`` warning. - Error on unexpected AVR reboot. - Fixed pin fault output. - No longer using interrupts for switch inputs. Debouncing on clock tick. ## v0.3.10 - Fixed "Flood" display, changed to "Load 1" and "Load 2". #108 - Highlight loads when on. - Fixed axis zeroing. - Fixed bug in home position set after successful home. #109 - Fixed ugly Web error dumps. - Allow access to log file from Web. - Rotate log so it does not grow too big. - Keep same GCode file through browser reload. #20 ## v0.3.9 - Fixed bug in move exec that was causing bumping between moves. - Fixed planner bug which could create negative s-curve times. - Hide step and optional pause buttons until they are implemented. - Fixed pausing problems. - Limit number of console messages. - Scrollbar on console view. - Log debug messages to console in developer mode. - Fixed AVR log message source. - Fixed step correction. - JOGGING, HOMMING and MDI states. - Fixed position problem with rapid MDI entry. ## v0.3.8 - Fixed pwr flags display - Added pwr fault flags to indicators ## v0.3.7 - Allow blocking error dialog for a period of time - Show actual error message on planner errors - Reset planner on serious error - Fixed console clear - Added helpful info to Video tab - Changed "Console" tab to "Messages" - Removed spin up/down velocity options, they don't do anything - Allow RS485 to work when wires are swapped - Allow setting VFD ID - Only show relevant spindle config items - More robust video camera reset - Added help page - Allow upgrade with out Internet - Limit power fault reporting - Added load over temp, load limiting and motor overload power faults ## v0.3.6 - Set max_usb_current=1 in /boot/config.txt from installer #103 ## v0.3.5 - Fixed dwell (G4) - Always show limit switch indicators regardless of motor enable - Fixed feed rate display - Added current GCode unit display - Fixed homed axis zeroing - Fixed probe pin input - Added reload button to video tab - Don't open error dialog on repeat messages - Handle large GCode files in browser - Added max lookahead limit to planner - Fixed GCode stopping/pausing where ramp down needs more than is in the queue - Added breakout box diagram to indicators - Initialize axes offsets to zero on startup - Fixed conflict between ``x`` state variable and ``x`` axis variable - Don't show ipv6 addresses on LCD. They don't fit. ## v0.3.4 - Added alternate units for motor parameters - Automatic config file upgrading - Fixed planner/jog sync - Fixed planner limits config - Accel units mm/min² -> m/min² - Search and latch velocity mm/min -> m/min - Fixed password update (broken in last version) - Start Web server earlier in case of Python coding errors Changelog not maintained in previous versions. See git commit log.