I use external harddisk(connected via USB with its own power supply) to boot into dietpi on my raspberry pi. It works okay for a day(even with multiple reboots and poweroff). But the next day RPi sends no power to usb ports and so it doesn't boot.
When I use SD card to boot it works. Ethernet port works and I'm able to SSH. I've plugged my external drive using the USB adapter to another computer and I can confirm that it is working. I am using the official power supply (2.5A 5.1V).
If I try to boot after keeping the RPi off for more than 1 day from the external HDD it works again! But this repeats everytime.
I can't understand this peculiar behaviour of my rpi 3b.
I have also set max_usb_current=1 in boot/config.txt but still no luck.
Here is the output of some of the commands I ran after booting with sd card on raspbian:
lsusb:
pi@raspberrypi:~ $ lsusb
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lsblk: (with external HDD connected)
pi@raspberrypi:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 29.8G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.6G 0 part /
dmesg | grep usb (A lot of over-current change errors messages)
pi@raspberrypi:~ $ dmesg | grep usb
[ 1039.172044] usb 1-1-port2: over-current change #4012
[ 1039.430051] usb 1-1-port2: over-current change #4013
[ 1039.688057] usb 1-1-port2: over-current change #4014
[ 1039.946054] usb 1-1-port2: over-current change #4015
[ 1040.204102] usb 1-1-port2: over-current change #4016
[ 1040.461910] usb 1-1-port2: over-current change #4017
[ 1040.720016] usb 1-1-port2: over-current change #4018
config.txt:
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16
# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720
# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2
# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4
# uncomment for composite PAL
#sdtv_mode=2
#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
# Additional overlays and parameters are documented /boot/overlays/README
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
[all]
#dtoverlay=vc4-fkms-v3d
program_usb_boot_mode=1
max_usb_current=1
Please help me resolve this issue. Thanks :)