MPU-6050 GY-521 Not Reading? Fix Common I2C Problems
By Official Hobby Components Online Store | Buy Electronic Kits, Components, Boards, Shields, Modules | Published: 2026-10-15
Category: Tips & Care
Debug a GY-521 MPU-6050 that returns no data over I2C: check wiring, run an I2C scanner, confirm address 0x68, and solve 3.3V level issues.
Quick answer
If your MPU-6050 isn't returning data, first run an I2C scanner to confirm the address is 0x68. If the scanner finds nothing, check SDA/SCL wiring and power, then verify logic levels: the GY-521 module expects 3.3V I2C, so with a 5V Arduino you need a level shifter or pull-ups to 3.3V. If the scanner sees 0x68 but reads fail, the issue is usually library configuration or missing pull-ups.
Confirm the GY-521 is wired and powered correctly
The GY-521 breakout has four essential pins: VCC, GND, SDA, SCL. Power it from 3.3V if your board provides it; the module's regulator and level shifting are minimal, and 5V on VCC can damage the MPU-6050. Connect SDA to your microcontroller's SDA pin and SCL to SCL. On an Arduino Nano V3.0, SDA is A4 and SCL is A5. On a WeMos D1 mini, SDA is D2 and SCL is D1. Keep wires short and secure—loose jumpers are a common cause of intermittent reads.
If you are using a 5V board like the Arduino Nano, the GY-521's I2C lines are not 5V tolerant. You must either use a level shifter or power the module from 3.3V and ensure pull-ups go to 3.3V, not 5V. Many GY-521 boards include 4.7k pull-ups to VCC; if VCC is 5V, those pull-ups will expose the MPU-6050 to 5V on SDA/SCL. Check your module for onboard pull-up resistors and consider removing them if you power from 5V, though that is delicate work.
- Power GY-521 from 3.3V, not 5V.
- On Arduino Nano: SDA=A4, SCL=A5.
- On WeMos D1 mini: SDA=D2, SCL=D1.
- Use a level shifter for 5V boards.
Run an I2C scanner to see if the sensor responds
An I2C scanner sketch scans all addresses and reports any device that acknowledges. Upload a standard scanner to your board, open the serial monitor at 9600 or 115200 baud, and look for a device at 0x68. The MPU-6050's default address is 0x68 when AD0 is low; if AD0 is pulled high, the address becomes 0x69. If the scanner finds nothing, the problem is wiring, power, or pull-ups. If it finds 0x68 but your sensor library fails, the issue is likely in code or library settings.
If the scanner shows 0x68 but you still get no data, try the example sketch from the library you are using (e.g., Adafruit_MPU6050 or MPU6050_tockn). Ensure you call the correct begin() function and that the I2C address in your code matches 0x68. Some libraries default to 0x68, others require you to specify it. Also check that you are not using a different I2C bus (Wire vs Wire1) on boards with multiple buses.
- Scanner finds 0x68: wiring and power are good; focus on code.
- Scanner finds 0x69: AD0 is high; adjust address in code.
- Scanner finds nothing: check SDA/SCL, power, and pull-ups.
Address 0x68 conflicts and pull-up resistor issues
If the scanner detects 0x68 but your code still fails, another device on the bus might be using the same address. Common I2C devices like some OLED displays or other sensors can also be at 0x68. Disconnect other I2C devices and test the MPU-6050 alone. If it works alone, you have an address conflict. You can change the MPU-6050's address to 0x69 by pulling AD0 high, but that requires a free pin or a solder bridge.
Missing or incorrect pull-up resistors can also cause failures. The GY-521 usually includes 4.7k pull-ups to VCC. If you power from 3.3V, those pull-ups are correct for 3.3V logic. If you use a level shifter, ensure the high side has pull-ups to 5V and the low side to 3.3V; many level shifters include them. If you removed the module's pull-ups or are using a bare MPU-6050 chip, add external 4.7k resistors from SDA and SCL to 3.3V.
- Disconnect other I2C devices to rule out address conflicts.
- Pull AD0 high to change address to 0x69.
- Add external 4.7k pull-ups if your module lacks them.
When to stop and choose a different approach
If you have verified wiring, power, address, and pull-ups, and the scanner still finds nothing, the module may be damaged. The MPU-6050 is sensitive to overvoltage; if it was accidentally connected to 5V on VCC or SDA/SCL, it may be dead. At that point, replacing the GY-521 is the most practical step. If you need a more robust solution for 5V systems, consider a 3.3V-native microcontroller like the WeMos D1 mini, which avoids level shifting entirely. For projects requiring precise motion tracking, a higher-end IMU with built-in 5V tolerance might save debugging time.
- If all checks fail, suspect a damaged sensor.
- Consider a 3.3V board to avoid level shifting.
- For advanced needs, look for an IMU with 5V tolerance.
Diagnosis checklist
- No device found by I2C scanner: Check power (3.3V), SDA/SCL connections, and pull-up resistors. Ensure the module is not damaged. If wiring and power are correct, replace the module.
- Scanner finds 0x68 but library fails: Verify the library's begin() function and address setting. Try a different library or example sketch. If code is correct, check for I2C bus speed issues; try 100kHz.
- Intermittent or noisy readings: Shorten wires, add decoupling capacitor (0.1uF) across VCC and GND, and ensure solid connections. If noise persists, consider a different sensor or shielded cables.
Product facts
- GY-521 MPU-6050 Module 3 Axis gyro + 3 Axis Accelerometer Module: Chip: MPU-6050; Power supply: 3~5V; Communication mode: standard IIC communication protocol; Chip built-in 16bit AD converter. The 3~5V supply range is often misread as 5V I2C tolerant; the I2C lines are not 5V tolerant, so level shifting is required when using a 5V microcontroller.
- Arduino Compatible Nano V3.0 with FREE USB Cable: Arduino compatible Nano V3.0 based on ATmega328; lacks DC power jack; works with Mini-B USB cable. This 5V board is a common host for the GY-521; its I2C pins (A4/A5) are 5V logic, so you must level shift or power the sensor from 3.3V to avoid damage.
- WeMos D1 mini Prototyping Shield: WeMos D1 mini Prototyping Shield designed for WeMos D1 mini and mini Pro; supplied with 3 sets of headers (requires soldering); allows stacking. The WeMos D1 mini is a 3.3V board, so it can connect directly to the GY-521 without a level shifter, simplifying I2C wiring and reducing failure points.


