bigtreetech / bigtreetech/Eddy
BUS_TIMEOUT
- Dominant language
- No language data
- Stars
- 335
- Forks
- 49
- PR merge metrics
- No merged PRs in 30d
Description
[klippy.log](https://github.com/user-attachments/files/28424154/klippy.log)
### Description of the Issue
The BTT Eddy USB systematically crashes with an I2C `BUS_TIMEOUT` error on address `42` (the LDC1612 chip) whenever an intensive data collection or sensor adjustment command is sent. The hardware connection drops immediately, forcing Klipper to shut down.
### Error Message
```
MCU 'eddy' I2C request to addr 42 reports error BUS_TIMEOUT
Once the underlying issue is corrected, use the "FIRMWARE_RESTART" command to reset the firmware, reload the config, and restart the host software.
Printer is shutdown
```
### Environment & Software Details
- **Host Hardware:** Raspberry Pi 4 Model B Rev 1.2 (Running Debian Bookworm, Linux 6.12.75)
- **Python Version:** 3.11.2
- **Klipper Version:** `v0.13.0-688-gb7c0329f1-dirty`
- **Other MCUs in the Toolchain:** BTT Octopus and Nitehawk SB toolboard.
### Steps to Reproduce
1. Start the printer. The `eddy` MCU connects successfully and reports temperatures normally.
2. Attempt to run manual/auto calibration or execute:
```gcode
LDC_CALIBRATE_DRIVE_CURRENT CHIP=btt_eddy
Detailed Troubleshooting Already Attempted
To isolate the root cause, the following steps were performed methodically:
Software Adjustments:
Set i2c_speed: 400000 in the configuration file to enforce standard fast mode.
Manually modified klippy/mcu.py to extend and relax the internal TRSYNC_TIMEOUT constraints, but the crash still occurs instantly.
Isolating Electromagnetic Interference (EMI):
Motor Isolation: Created a macro to cut power to all stepper motors (M18) and added a dwell time before sending the calibration ACCEPT command. The crash still occurred in complete electrical silence.
Pure Electronic Test: Ran the LDC_CALIBRATE_DRIVE_CURRENT command. This test triggers the crash immediately without moving a single motor or activating any heaters, completely ruling out external EMI from the Voron frame.
Hardware & Cabeling Isolation:
Direct USB Link: Removed the connection between the Eddy and the Nitehawk toolboard extension port. Connected the Eddy directly to the Raspberry Pi using the stock BTT USB cable to rule out toolboard bus saturation.
USB Port Power Test: Tested the unit on both USB 2.0 and dedicated USB 3.0 ports (which provide up to 900mA) to eliminate host power-throttling or shared bus drops.
Out-of-Frame Test: Tested the sensor completely demounted from the Stealthburner toolhead and away from the printer frame to ensure no structural shorts or magnetic interference.
Conclusion
Despite isolating the sensor from all external factors (moteurs, heaters, toolboard, power constraints), the LDC1612 chip (address 42) consistently freezes during sampling or sensor tuning. This points directly to a hardware manufacturing defect on this specific unit—likely failing internal I2C pull-up resistors or a faulty onboard 3.3V voltage regulator.
Log Files
klippy.log is attached to this issue.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the attached klippy.log and reproduce the failure using LDC_CALIBRATE_DRIVE_CURRENT CHIP=btt_eddy. Review when the LDC1612 address 42 BUS_TIMEOUT occurs across the listed isolation tests; done means establishing whether the failure has a software diagnosis or requires hardware replacement.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- debian, linux, python
- Domain
- embedded-iot
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100