Issues with NVIDIA Jetson Nano Developer Kit

Hello,

I’m having issues getting the device to work properly. I’m using all of the components that were included with the kit and followed the assembly guide to the best of my ability. When everything is connected, I see the green LED indicator on the NVIDIA unit and a flashing red light on the Sparkfun Serial Controlled Motor Driver. However, the Qwiic OLED is blank and appears off. I’m not sure how to best troubleshoot the situation. I’ve attached pictures and here’s the output of some commands I’ve seen mentioned in other threads.

sudo i2cdetect -r -y 1

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: – – – – – – – – – – – – –

10: – – – – – – – – – – – – – – – –

20: – – – – – – – – – – – – – – – –

30: – – – – – – – – – – – – – 3d – –

40: – – – – – – – – – – – – – – – –

50: – – – – – – – – – – – – – 5d – –

60: – – – – – – – – – – – – – – – –

70: – – – – – – – –

i2cdump -y 1 0x5d

0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef

00: 06 a9 10 08 00 00 00 00 00 64 c9 00 92 00 00 00 ???..d?.?..

10: 00 00 00 00 00 00 5c 0c 00 01 00 00 0e 00 02 19 …?.?..?.??

20: 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ???

30: 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ???

40: 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ??..

50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

70: 00 0a 00 01 9b 5c 00 01 00 4a 01 00 00 00 00 00 .?.??.?.J?..

80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

When attempting to run basic_motion.ipynb, I get this error in the 2nd cell “robot = Robot()”


OSError Traceback (most recent call last)

in

----> 1 robot = Robot()

/usr/local/lib/python3.6/dist-packages/jetbot-0.3.0-py3.6.egg/jetbot/robot.py in init(self, *args, **kwargs)

20 def init(self, *args, **kwargs):

21 super(Robot, self).init(*args, **kwargs)

—> 22 self.motor_driver = Adafruit_MotorHAT(i2c_bus=self.i2c_bus)

23 self.left_motor = Motor(self.motor_driver, channel=self.left_motor_channel, alpha=self.left_motor_alpha)

24 self.right_motor = Motor(self.motor_driver, channel=self.right_motor_channel, alpha=self.right_motor_alpha)

/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg/Adafruit_MotorHAT/Adafruit_MotorHAT_Motors.py in init(self, addr, freq, i2c, i2c_bus)

229 self.motors = [ Adafruit_DCMotor(self, m) for m in range(4) ]

230 self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ]

→ 231 self._pwm = PWM(addr, debug=False, i2c=i2c, i2c_bus=i2c_bus)

232 self._pwm.setPWMFreq(self._frequency)

233

/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg/Adafruit_MotorHAT/Adafruit_PWM_Servo_Driver.py in init(self, address, debug, i2c, i2c_bus)

57 self.i2c = get_i2c_device(address, i2c, i2c_bus)

58 logger.debug(“Reseting PCA9685 MODE1 (without SLEEP) and MODE2”)

—> 59 self.setAllPWM(0, 0)

60 self.i2c.write8(self.__MODE2, self.__OUTDRV)

61 self.i2c.write8(self.__MODE1, self.__ALLCALL)

/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg/Adafruit_MotorHAT/Adafruit_PWM_Servo_Driver.py in setAllPWM(self, on, off)

93 def setAllPWM(self, on, off):

94 “Sets a all PWM channels”

—> 95 self.i2c.write8(self.__ALL_LED_ON_L, on & 0xFF)

96 self.i2c.write8(self.__ALL_LED_ON_H, on >> 8)

97 self.i2c.write8(self.__ALL_LED_OFF_L, off & 0xFF)

/usr/local/lib/python3.6/dist-packages/Adafruit_GPIO-1.0.4-py3.6.egg/Adafruit_GPIO/I2C.py in write8(self, register, value)

114 “”“Write an 8-bit value to the specified register.”“”

115 value = value & 0xFF

→ 116 self._bus.write_byte_data(self._address, register, value)

117 self._logger.debug(“Wrote 0x%02X to register 0x%02X”,

118 value, register)

/usr/local/lib/python3.6/dist-packages/Adafruit_PureIO-0.2.3-py3.6.egg/Adafruit_PureIO/smbus.py in write_byte_data(self, addr, cmd, val)

254 # Send the data to the device.

255 self._select_device(addr)

→ 256 self._device.write(data)

257

258 def write_word_data(self, addr, cmd, val):

OSError: [Errno 121] Remote I/O error

Let me know if there’s any additional information/pictures I should provide to help debug. Thanks!

Hey there, this is actually a simple issue… it looks like you re-flashed your pre-configured SD card. You are probably using the base image from Nvidia, which is hard coded for the Adafruit products they were developing with. There are two options to fix this issue (see the Troubleshooting section of the [5. Software Setup Guide from NVIDIA step in the Assembly Guide[/i]).

  • - (Recommended) Re-flash the SD Card using our image, which also includes the drivers for the WiFi adapter in our kit.

  • - Re-Applying the Software Modifications, which will swap out the hard coded files. (*Don’t forget to install the Python packages and WiFi driver if necessary. You can find more info on the WiFi adapter drivers on this [forum post.[/i])

  • - [/list]](https://forum.sparkfun.com/viewtopic.php?f=159&t=51225)*](Assembly Guide for SparkFun JetBot AI Kit - SparkFun Learn)

    Thanks for the quick response! I didn’t do anything to the SD card - it went straight from the packaging into the Jetbot.

    Is it possible the SD card could have arrived formatted incorrectly? Even if I didn’t make any modifications to the SD card, should my next troubleshooting step be re-flashing?

    Let me test out one of the cards from our stock, tomorrow, to see if I run into the same issue and I’ll get back to you.

    In the meantime, here are a few things to troubleshoot this issue:

  • - Assuming you purchased one of these kits, directly from us:
  • - [https://www.sparkfun.com/products/15437](https://www.sparkfun.com/products/15437)
  • - [https://www.sparkfun.com/products/15365](https://www.sparkfun.com/products/15365)
  • Could you, get me the batch number, so that I can track down this issue? It should be listed under the barcode for the kit.
  • - Double check that you are sure that you are using the pre-configured SD card that was included with those specific kits (and not possibly another Jetson/Jetbot kit you may have gotten)?
  • - Check that the image has the Qwiic Python packages. Run the following command in the terminal: ``` pip3 list | grep qwiic ```
  • - If it returns blank, then it is very unlikely the image on your SD card is the pre-configured image that we use. At this point, you could wait to hear back from me or just re-flash the SD card (that should fix all issues).
  • - If you see a list, then you might have just overwritten the **jetbot** folder in the home directory. You can try the **Re-Applying the Software Modifications** section of the troubleshooting section mentioned earlier (that should fix the overwritten files).
  • - Lastly, you could try to use the USB WiFi adapter to access the Jetson remotely. This isn't an absolute test as the driver list could have been updated. However, at the time of our development, the built-in driver would usually fail when users tried to access the Jetbot remotely over WiFi.
  • Notes:

  • - I highly doubt that it was a production issue... its not easy for someone in production to do something that would end up with the specific error messages you are getting and there should be a bunch of people (*at least 50+*) reporting this exact same issue.
  • - The only way for you to get those errors are from using a base image provided by Nvidia or if you overwrote the **jetbot** folder with Nvidia's files.
  • - The only reason to re-flash the card is to make sure you have the drivers for the WiFi adapter and to install the Python packages for the Qwiic devices. Otherwise, if you only overwrote the **jetbot** folder, then you could follow the **Re-Applying the Software Modifications** part of the troubleshooting section.
  • Thanks again for the thorough response.

    1. It is KIT-15365 and batch #124274.

    2. This is the only kit I have so it couldn’t have been accidentally mixed up.

    pip3 list | grep qwiic

    
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the list section) to disable this warning.
    
    sparkfun-qwiic (0.9.6)
    
    sparkfun-qwiic-bme280 (0.9.0)
    
    sparkfun-qwiic-ccs811 (0.9.4)
    
    sparkfun-qwiic-i2c (0.8.3)
    
    sparkfun-qwiic-joystick (0.9.0)
    
    sparkfun-qwiic-keypad (0.9.0)
    
    sparkfun-qwiic-micro-oled (0.9.0)
    
    sparkfun-qwiic-proximity (0.9.0)
    
    sparkfun-qwiic-scmd (0.9.0)
    
    sparkfun-qwiic-twist (0.9.0)
    
    I don’t think I did anything to overwrite the jetbot folder. 
    

    ls jetbot

    
    assets CMakeCache.txt cmake_install.cmake dist jetbot.egg-info Makefile README.md
    
    build CMakeFiles CMakeLists.txt jetbot LICENSE.md notebooks setup.py
    
    I’ll still try the Re-Applying the Software Modifications section if you think that may help.
    
    4. I am able to ssh into the Jetson. Is that what you mean by access it remotely?
    
    One other thing I should mention, when I initially set it up, the OLED screen worked once. I tried running the basic_motion notebook and got the error mentioned above so I tried disconnecting and reconnecting some wiring to make sure that wasn’t the issue and OLED never worked again. The notebook still had the same error, too.

    Another thing that may or may not help, here’s what I see when I ssh into the jetbot:

    Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.9.140-tegra aarch64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    This system has been minimized by removing packages and content that are
    not required on a system that users do not log into.
    
    To restore this content, you can run the 'unminimize' command.
    
    400 packages can be updated.
    164 updates are security updates.
    

    Should I have to update something?

    It sounds like the jetbot folder got replaced (ex. the repository was cloned with step 5 of Nvidia’s instructions). To fix it, you just need to follow the Re-Applying the Software Modifications section.

    As a note, I double checked the SD card that we duplicate and several batches of kits, I am absolutely certain that it is not a production issue. It is pretty much impossible for that to have been messed up.

    replacement files.zip (3.88 KB)

    You were correct. I must’ve accidentally cloned step 5 of Nvidia’s instructions at some point. After following the Re-Applying the Software Modifications steps, it started behaving normally.

    Thanks for all your help!