Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues running RAK commands #31

Open
AchrafAcheche opened this issue Jan 25, 2023 · 10 comments
Open

Issues running RAK commands #31

AchrafAcheche opened this issue Jan 25, 2023 · 10 comments

Comments

@AchrafAcheche
Copy link

AchrafAcheche commented Jan 25, 2023

Hi Guys,
I recently bought the IoT LoRa Node pHAT, using with Raspberry Pi 4 Model B 8GB RAM.
My OS Version : Raspbian GNU/Linux 10 (buster)
For reference, I did follow this link,
I have run in to an issue with the initial setup, it seems when running rak811 commands I'm getting errors, for example,
image

image

Maybe my Phat and Paspberry not connected correctly ?
image
image

@AmedeeBulle
Copy link
Owner

If it is a new module, it has most probably a newer firmware (v3), and the instructions you follow are a bit outdated...

You can get your module firmware version with rak811 version.

If it is a V3, the README at the top of this repo should help you to proceed.

@AchrafAcheche
Copy link
Author

I tried ,but it's the same problem
image
image

@AchrafAcheche
Copy link
Author

rak811 version dosen't work
image

@AmedeeBulle
Copy link
Owner

The script can open the device but doesn't get any response.

I don't have an RPi4 available for testing right now, but it looks like you have have Bluetooth assigned to /dev/serial0 instead of the RAK811 module.

Can you completely disable Bluetooth and try again?
( dtoverlay=disable-bt in /boot/config.txt should do the trick)

You should then have a single /dev/serial* device

@AchrafAcheche
Copy link
Author

Same problem Thank you anyway Philippe

@AchrafAcheche
Copy link
Author

AchrafAcheche commented Jan 27, 2023

One other question , does the phat have a led ?

@AmedeeBulle
Copy link
Owner

AmedeeBulle commented Jan 29, 2023

No, there is no led on the module...

I tested again on an RPi4, and this is what I have:

$ ls -l /dev/serial*
lrwxrwxrwx 1 root root 5 Nov  4  2021 /dev/serial0 -> ttyS0
lrwxrwxrwx 1 root root 7 Nov  4  2021 /dev/serial1 -> ttyAMA0

The rak811 library uses serial0 (primary UART), as it is normally the one assigned to the GPIO header used by the module.
In my configuration, the primary UART (serial0) is the Mini UART (UART1 aka ttyS0).
This should be the default according to the documentation.
In your first screenshot you have it as secondary...
I guess you could have it working with the PL011 (UART0 aka ttyAMA0), but then you have to re-assign Bluetooth to the Mini UART (I haven't tried this...)

More reading about this: Configuring UARTs

I have attached my config.txt, but the only relevant line is:

enable_uart=1

With all that, I have a successful connection to the module:

 $ rak811v3 -d version
DEBUG:rak811.serial:Serial initialized
DEBUG:rak811.serial:Sending: >at+version\r\n<
DEBUG:rak811.serial:Received: >OK V3.0.0.14.H<
V3.0.0.14.H

Hope this helps to solve your issue.

@Limocello
Copy link

Hello There,
I seem to face the same Issue with a Compute Module 4 and the Raspberry Pi zero LoRa HAT:
https://learn.pi-supply.com/make/getting-started-with-the-raspberry-pi-lora-node-phat/
https://www.waveshare.com/wiki/CM4-IO-BASE-B#USB2.0
If I check for the Version (or do any other command)
image
The same Issue happens regardless of wether I use rak811 or rak811v3

I assume the issue comes from the fact that I'm using a HAT designed for a Raspberry Pi zero on a Raspberry Pi Compute Module 4, which from my knowledge has more UARTs and a different configuration (see attachement).
I have the same UART assignement:
image

I've disabled the serial login shell, tried switching the UART interfaces, adding the dtoverlay=disable-bt, reimaging the Raspberry Pi without any signs of success. I'm at my wits end either there's something grave I'm overseeing, my module is broken or there's an issue with configuring raspberry Pi 4's.

One question remains, that could give me a lead: Basically I've also tried running rak811v3 version without the LoRa HAT attached and got the same timeout error. Whilst it completely makes sense, that this causes an error should it be the same error (rak811.serial.Rak811TimeoutError) or should there be a different error? Depending on this I might be able to conclude whether the Error lies within the software or if its actually my HAT that's not working.

I'd really appreciate any help even if its not with a compute module but a Raspberry Pi 4 as I've spent hours trying to fix this.
Thank you very much in advance
config.txt

@billz
Copy link

billz commented Jun 2, 2024

I also encountered this but found a solution... sharing it here in the event it helps someone else.

After disabling the serial console (or so I'd thought) using raspi-config, I ran into the same timeouts with ttyAMA0. I used the following to inspect the device file and found that agetty was using it:

$ ls -la /dev/serial0
lrwxrwxrwx 1 root root 7 Jun  1 06:27 /dev/serial0 -> ttyAMA0

$ sudo fuser -v /dev/ttyAMA0
                     USER        PID ACCESS COMMAND
/dev/ttyAMA0:        root        856 F.... agetty

Sure enough, the serial-getty@ttyAMA0 service was active:

$ sudo systemctl status [email protected][email protected] - Serial Getty on ttyAMA0
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled-runtime; preset: enabled)
     Active: active (running) since Sun 2024-06-02 07:46:15 CEST; 6min ago
       Docs: man:agetty(8)
             man:systemd-getty-generator(8)
             https://0pointer.de/blog/projects/serial-console.html
   Main PID: 856 (agetty)
      Tasks: 1 (limit: 174)
        CPU: 8ms
     CGroup: /system.slice/system-serial\x2dgetty.slice/[email protected]
             └─856 /sbin/agetty -o "-p -- \\u" --keep-baud 115200,57600,38400,9600 - vt220

Jun 02 07:46:15 loranode2 systemd[1]: Started [email protected] - Serial Getty on ttyAMA0.

Stopping the service permits use of the serial port on ttyAMA0. Disabling it does not prevent it from restarting on boot, though. This is due to systemd's use of generators. The solution in this case is to mask the service to prevent it from ever being enabled:

$ sudo systemctl mask [email protected]

After doing this I had no issues using rak811 or rak811v3.

Environment:

Pi Zero 2 W with Debian 12/Raspberry Pi OS (64-bit) Lite bookworm.

$ uname -a
Linux loranode2 6.6.28+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.28-1+rpt1 (2024-04-22) aarch64 GNU/Linux

@BryanNsoh
Copy link

BryanNsoh commented Jul 10, 2024

You are much appreciated billz! I wrote a script anyone can run and it does everything recommended across all the issues on this problem hope someone finds it helpful. also thanks AmedeeBulle for diligent replies!!

Here's the script that finally solved my problem. It performs all the checks and fixes recommended throughout this thread:

#!/bin/bash

# Comprehensive LoRa pHAT Fix Script
# This script performs checks and fixes for common LoRa pHAT issues

# Function to log messages
log_message() {
    echo "$1"
}

# Check and fix UART configuration
fix_uart_config() {
    if ! grep -q "enable_uart=1" /boot/config.txt; then
        log_message "Adding enable_uart=1 to /boot/config.txt"
        echo "enable_uart=1" | sudo tee -a /boot/config.txt
    fi

    if ! grep -q "dtoverlay=disable-bt" /boot/config.txt; then
        log_message "Adding dtoverlay=disable-bt to /boot/config.txt"
        echo "dtoverlay=disable-bt" | sudo tee -a /boot/config.txt
    fi
}

# Stop and disable serial-getty service
fix_serial_getty() {
    log_message "Stopping and disabling [email protected]"
    sudo systemctl stop [email protected]
    sudo systemctl disable [email protected]
    sudo systemctl mask [email protected]
}

# Check RAK811 version
check_rak_version() {
    log_message "Checking RAK811 version:"
    rak811 -v -d version || log_message "Failed to get RAK811 version"
    rak811v3 -v -d version || log_message "Failed to get RAK811v3 version"
}

# Perform hard reset
perform_hard_reset() {
    log_message "Performing hard reset:"
    rak811 -v -d hard-reset || log_message "Failed to perform hard reset"
}

# Reset LoRa
reset_lora() {
    log_message "Resetting LoRa:"
    rak811 -v -d reset lora || log_message "Failed to reset LoRa"
}

# Check for processes using ttyAMA0
check_ttyAMA0_usage() {
    log_message "Checking for processes using ttyAMA0:"
    sudo fuser -v /dev/ttyAMA0 || log_message "No processes found using ttyAMA0"
}

# Main execution
log_message "Starting Comprehensive LoRa pHAT Fix Script"

fix_uart_config
fix_serial_getty
check_rak_version
perform_hard_reset
reset_lora
check_ttyAMA0_usage

log_message "Checks and fixes applied. Please reboot your Raspberry Pi."
log_message "After reboot, run this script again to verify all issues are resolved."
log_message "If problems persist, please check physical connections and antenna configuration."
log_message "Remember: If using an external antenna, ensure the INT inductor is desoldered for best range."

# Prompt for reboot
read -p "Would you like to reboot now? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
    sudo reboot
fi

To use this script:

  1. Save it to a file named lora_phat_fix.sh
  2. Make it executable: chmod +x lora_phat_fix.sh
  3. Run it with sudo: sudo ./lora_phat_fix.sh

This script will:

  • Add necessary UART configurations to /boot/config.txt if they're missing
  • Stop, disable, and mask the serial-getty service
  • Prompt you to reboot, which is necessary for changes to take effect

After running this script and rebooting, most common LoRa pHAT issues should be resolved. If anyone is still having trouble, they should check their physical connections and antenna configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants