Starting from firmware 3.0.0, the Original Prusa Multi-material upgrade (MMU) has a set of runtime variables called registers. You can use these to read or write values into the MMU via G-codes. This article provides the list of available registers in the current firmware.
They can be different error codes and status information related to the MMU (e.g. filament errors, motor errors, temperature warnings, etc), specific parameters (feed rate, acceleration, current, etc), and different components (pulley, selector, idler, etc).
The table below includes 8-bit (empty value: 0xFFh 255) and 16-bit registers (empty value: 0xFFFFh 65535). The empty values show the maximum amount the register can hold.
There are three different access types:
Generally, the registers are in the MMU. One of the ways of reading/writing into the registers is through G-codes. The ones you will need here are:
Address | Bit/Type | Name | Valid values | Default | Description | Read / Write | Gcode Read | Gcode Write |
---|---|---|---|---|---|---|---|---|
0x00h 00 | uint8 | project_major | 00h 0 | ffh 255 | Project Major Version | Read only | M707 A0x00 | N/A |
0x01h 01 | uint8 | project_minor | 00h 0 | ffh 255 | Project Minor Version | Read only | M707 A0x01 | N/A |
0x02h 02 | uint8 | project_revision | 00h 0 | ffh 255 | Project Revision | Read only | M707 A0x02 | N/A |
0x03h 03 | uint8 | project_build _number | 00h 0 | ffh 255 | Project Build Number | Read only | M707 A0x03 | N/A |
0x04h 04 | uint16 | MMU_errors | 0000h 0 | ffffh 65535 | MMU Errors | Read / Write Persistent | M707 A0x04 | M708 A0x04 Xnnnn |
0x05h 05 | uint8 | Current_Progress_Code | ffh 255 | ffh 255 | Emtpy | Read only | M707 A0x05 | N/A |
00h 0 | OK | |||||||
01h 1 | EngagingIdler | |||||||
02h 2 | DisengagingIdler | |||||||
03h 3 | UnloadingToFinda | |||||||
04h 4 | UnloadingToPulley | |||||||
05h 5 | FeedingToFinda | |||||||
06h 6 | FeedingToBondtech | |||||||
07h 7 | FeedingToNozzle | |||||||
08h 8 | AvoidingGrind | |||||||
09h 9 | FinishingMoves | |||||||
0ah 10 | ERRDisengagingIdler | |||||||
0bh 11 | ERREngagingIdler | |||||||
0ch 12 | ERRWaitingForUser | |||||||
0dh 13 | ERRInternal | |||||||
0eh 14 | ERRHelpingFilament | |||||||
0fh 15 | ERRTMCFailed | |||||||
10h 16 | UnloadingFilament | |||||||
11h 17 | LoadingFilament | |||||||
11h 18 | SelectingFilamentSlot | |||||||
12h 19 | PreparingBlade | |||||||
13h 20 | PushingFilament | |||||||
14h 21 | PerformingCut | |||||||
15h 22 | ReturningSelector | |||||||
16h 23 | ParkingSelector | |||||||
17h 24 | EjectingFilament | |||||||
18h 25 | RetractingFromFinda | |||||||
19h 26 | Homing | |||||||
1ah 27 | MovingSelector | |||||||
1bh 28 | FeedingToFSensor | |||||||
0x06h 06 | uint16 | Current_Error_Code | 0000h 0 | ffffh 65535 | RUNNING | Read only | M707 A0x06 | N/A |
0001h 1 | OK | |||||||
8001h 32769 | FSENSOR_DIDNT _SWITCH_ON | |||||||
8002h 32770 | FINDA_DIDNT _SWITCH_OFF | |||||||
8003h 32771 | FSENSOR_DIDNT _SWITCH_ON | |||||||
8004h 32772 | FSENSOR_DIDNT _SWITCH_OFF | |||||||
8005h 32773 | FILAMENT_ALREADY _LOADED | |||||||
8006h 32774 | INVALID_TOOL | |||||||
8007h 32775 | Homing_FAILED | |||||||
8008h 32776 | FINDA_VS_EEPROM _DISREPANCY | |||||||
8009h 32777 | FSENSOR_TOO _EARLY | |||||||
802bh 32811 | QUEUE_FULL | |||||||
802ch 32812 | VERSION_MISMATCH | |||||||
802dh 32813 | PROTOCOL_ERROR | |||||||
802eh 32814 | MMU_NOT_RESPONDING | |||||||
802fh 32815 | INTERNAL | |||||||
8200h 33280 | TMC_IOIN_MISMATCH | |||||||
8240h 33344 | TMC_IOIN_MISMATCH PULLEY | |||||||
8280h 33408 | TMC_IOIN_MISMATCH SELECTOR | |||||||
8300h 33536 | TMC_IOIN_MISMATCH IDLER | |||||||
83C0h 33728 | TMC_IOIN_MISMATCH All 3 | |||||||
8400h 33792 | TMC_RESET | |||||||
8440h 33856 | TMC_RESET PULLEY | |||||||
8480h 33920 | TMC_RESET SELECTOR | |||||||
8500h 34048 | TMC_RESET IDLER | |||||||
85C0h 34240 | TMC_RESET All 3 | |||||||
8800h 34816 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP | |||||||
8840h 34880 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP PULLEY | |||||||
8880h 34944 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP SELECTOR | |||||||
8900h 35072 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP IDLER | |||||||
89C0h 35264 | TMC_UNDERVOLTAGE_ON _CHARGE_PUMP All 3 | |||||||
9000h 36864 | TMC_SHORT_TO_GROUND | |||||||
9040h 36928 | TMC_SHORT_TO_GROUND PULLEY | |||||||
9080h 36992 | TMC_SHORT_TO_GROUND SELECTOR | |||||||
9100h 37120 | TMC_SHORT_TO_GROUND IDLER | |||||||
91C0h 37312 | TMC_SHORT_TO_GROUND All 3 | |||||||
A000h 40960 | TMC_OVER_TEMPERATURE _WARN | |||||||
A040h 41024 | TMC_OVER_TEMPERATURE _WARN PULLEY | |||||||
A080h 41088 | TMC_OVER_TEMPERATURE _WARN SELECTOR | |||||||
A100h 41216 | TMC_OVER_TEMPERATURE _WARN IDLER | |||||||
A1C0h 41408 | TMC_OVER_TEMPERATURE _WARN All 3 | |||||||
C000h 49152 | TMC_OVER_TEMPERATURE _ERROR | |||||||
C040h 49216 | TMC_OVER_TEMPERATURE _ERROR PULLEY | |||||||
C080h 49280 | TMC_OVER_TEMPERATURE _ERROR SELECTOR | |||||||
C100h 49408 | TMC_OVER_TEMPERATURE _ERROR IDLER | |||||||
C1C0h 49600 | TMC_OVER_TEMPERATURE _ERROR All 3 | |||||||
0x07h 07 | uint8 | Filament_State | 00h 0 | ffh 255 | Filament State | Read / Write | M707 A0x07 | M708 A0x07 Xnn |
0x08h 08 | uint8 | FINDA_State | 00h 0 | ffh 255 | not triggered | Read only | M707 A0x08 | N/A |
01h 1 | triggered | |||||||
0x09h 09 | uint8 | FSensor_State | 00h 0 | ffh 255 | not triggered | Read / Write | M707 A0x09 | M708 A0x09 Xnn |
01h 1 | triggered | |||||||
0x0ah 10 | uint8 | Motor_Mode | 00h 0 | 00h 0 | normal | Read only | M707 A0x0a | N/A |
01h 1 | stealth | |||||||
0x0bh 11 | uint8 | extra_load_distance | 00h 0 | 1eh 30 | unit mm | Read / Write | M707 A0x0b | M708 A0x0b Xnn |
0x0ch 12 | uint8 | FSensor_unload _check_dist. | 00h 0 | 28h 30 | unit mm | Read / Write | M707 A0x0c | M708 A0x0c Xnn |
0x0dh 13 | uint16 | Pulley_unload _feedrate | 0000h 0 | 0078h 120 | unit mm/s | Read / Write | M707 A0x0d | M708 A0x0d Xnnnn |
0x0eh 14 | uint16 | Pulley_acceleration | 0000h 0 | 320h 800.0 | unit mm/s² | Read (Write) | M707 A0x0e | (M708 A0x0e Xnnnn) |
0x0fh 15 | uint16 | Selector_acceleration | 0000h 0 | 00c8h 200.0 | unit mm/s² | Read (Write) | M707 A0x0f | (M708 A0x0f Xnnnn) |
0x10h 16 | uint16 | Idler_acceleration | 0000h 0 | 01f4h 500.0 | unit deg/s² | Read (Write) | M707 A0x10 | (M708 A0x10 Xnnnn) |
0x11h 17 | uint16 | Pulley_load_feedrate | 0000h 0 | 0050h 80 | unit mm/s | Read / Write | M707 A0x11 | M708 A0x11 Xnnnn |
0x12h 18 | uint16 | Selector_nominal _feedrate | 0000h 0 | 002dh 45 | unit mm/s | Read / Write | M707 A0x12 | M708 A0x12 Xnnnn |
0x13h 19 | uint16 | Idler_nominal _feedrate | 0000h 0 | 012ch 300 | unit deg/s | Read / Write | M707 A0x13 | M708 A0x13 Xnnnn |
0x14h 20 | uint16 | Pulley_slow_feedrate | 0000h 0 | 0014h 20 | unit mm/s | Read / Write | M707 A0x14 | M708 A0x14 Xnnnn |
0x15h 21 | uint16 | Selector_homing _feedrate | 0000h 0 | 001eh 30 | unit mm/s | Read (Write) | M707 A0x15 | (M708 A0x15 Xnnnn) |
0x16h 22 | uint16 | Idler_homing _feedrate | 0000h 0 | 0109h 265 | unit deg/s | Read (Write) | M707 A0x16 | (M708 A0x16 Xnnnn) |
0x17h 23 | uint8 | Pulley_sg_thrs__R | 00h 0 | 08h 8 | Read / Write Persistent | M707 A0x17 | M708 A0x17 Xnn | |
0x18h 24 | uint8 | Selector_sg_thrs_R | 00h 0 | 03h 3 | Read / Write Persistent | M707 A0x18 | M708 A0x18 Xnn | |
0x19h 25 | uint8 | Idler_sg_thrs_R | 00h 0 | 06h 6 | Read / Write Persistent | M707 A0x19 | M708 A0x19 Xnn | |
0x1ah 26 | uint16 | Get Pulley position | 0000h 0 | ffffh 65535 | unit mm | Read only | M707 A0x1a | N/A |
0x1bh 27 | uint16 | Set/Get_Selector_slot | 0000h 0 | ffffh 65535 | unit slot [0-4/5] 5=park pos | Read / Write | M707 A0x1b | M708 A0x1b Xn |
0x1ch 28 | uint16 | Set/Get_Idler_slot | 0000h 0 | ffffh 65535 | unit slot [0-4/5] 5=disengaged | Read / Write | M707 A0x1c | M708 A0x1c Xn |
0x1dh 29 | uint8 | Set/Get Selector cut iRun current | 0 to 63 (aka 0-1024mA) | 31 (530mA) | Read / Write | M707 A0x1d | M708 A0x1d Xn | |
0x1eh 30 | uint16 | Set/Get Pulley iRun current | 0-31 | 14h 20 | 20->350mA: see TMC2130 current conversion | Read / Write | M707 A0x1e | M708 A0x1e Xn |
0x1fh 31 | uint16 | Set/Get Selector iRun current | 0-31 | 1fh 31 | 31->530mA: see TMC2130 current conversion | Read / Write | M707 A0x1f | M708 A0x1f Xn |
0x20h 32 | uint16 | Set/Get Idler iRun current | 0-31 | 1fh 31 | 31->530mA: see TMC2130 current conversion | Read / Write | M707 A0x20 | M708 A0x20 Xn |
If you have a question about something that isn't covered here, check out our additional resources.
And if that doesn't do the trick, you can send an inquiry to [email protected] or through the button below.