bigtreetech / bigtreetech/Eddy

BUS_TIMEOUT

Open
#166 1 comment 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.