LTE base hat, Raspberry Pi 4 Uart Occupy (has very simple answer)

If i use LTE BASE HAT as only USB device attached to pins of raspberry pi 4, in that case can i use ALL FUNCTIONALITY of raspberry pi UART pins ? Because i use some of these pins for serial communication.

I want to use these ports.
Are these ports available to use with HAT ?
If isn’t possible to use with attaching, How can i use without attaching ?

Attaching the Base HAT will not affect your connection as the UART of the HAT is disconnected and used the USB interface by default.

So i can attach like this and it will not occupy my UART connection :

, will it ?

Yes, This is the right connection.

I have the Sixfab IOT shield Cat M1 board and am trying to get the above arrangement to work. If I make a connection to pixhawk over UART then boot them modem I loose my connection to pixhawk and cannot reconnect. I am using USB cord and QMI. Any ideas?

Firstly, Did you establish connection to pixhawk without shield ?
If it worked without any error, is it connected with UART and USB at the same time ?( when shield plugged in)

Pixhawk has No USB connection.

Below are two scenarios, hopefully can provide enough information.

Scenario 1: Sixfab shield NOT IN place on Pi, just connected with USB.

  • connect to Pixhawk successful over serial
  • turn on Sixfab shield with power button on board - both Pixhawk and Sixfab shield work fine

Scenario 2: Sixfab shield IN PLACE on Pi, connected with USB as well

  • connect to Pixhawk over serial to begin with is OK
  • turn on Sixfab shield with EITHER power button or in python script - Sixfab shield works fine but serial connection to Pixhawk drops. In mavproxy a bunch of random characters comes up on screen, and then says “Link Down”

Scenario 3: Sixfab shield NOT IN PLACE on pi, connected with USB and GPIO 11 jump wire between Pi and Sixfab board

  • connect to Pixhawk over serial to begin
  • turn on Sixfab shield with python script - both Pixhawk and Sixfab shield work fine.
    This suggests to me that the Sixfab board is generating some noise on the serial pins even when USB is plugged in.

Scenario 3 photo:

There is a important thing that you should know :
Is the shield established connection over USB or Uart whileyou are using Pi with IN PLACE shield.
Can you check DEFAULT connection type according Docs in or which kind you setted up ?
If you haven’t got changing option then i think you can use IN PLACE with USB by disconnecting headers or data bus connection. But i think you can find Default connection type settings while using IN PLACE. Check sixfab setup Docs

The Docs say:

Connection Types

USB: If you don’t want to occupy UART port on the Raspberry Pi, just plug the shield via micro USB to Raspberry Pi. You can start to send and receive AT commands, transmit data, output GNSS NEMA, debug and upgrade firmware over the USB connection. It supports USB drivers for Windows, Linux, and Android. Details can be found at drivers section.

UART: The UART pins will be available to use, with 3.3V power domain, directly connected the UART port of Raspberry Pi. Can be used for data transmission and AT command communication with 115200bps baud rate. The default data frame format is 8N1 (8 data bits, no parity, 1 stop bit). This port does not provide GNSS data. The GNSS data can be gathered only over the USB.

So from this I did assume with USB plugged in it would disable UART. Also, I am using QMI which I read somewhere only works on USB.

Please provide more instruction on “disconnecting headers or data bus connection” or link to place in docs I can find this information.

I already asked quite same question of your problem in this template and @saeed said it won’t occupy. Maybe connections of your shield not same with sixfab LTE base hat.
So in this case firstly i asked to you about software setup.
Check your USB drivers, if this is not about drivers you can use this steps.
1- Desolder
In my idea you should desolder UART pins of shield which occupy your connection between pixhawk or which pins are pxhawk using
I found Image for pins i think this is your shield

form here :

But while desoldering you may damage your shield.

2- Make 3D container for shield
In this link there is 3D files for shield. You can design a container without attaching headers as using these 3D files.

3-Just use without in placing
You will make a drone as i understand your setup. If you set the place as controlling center gravity of drone this proccess won’t damage your flying experience.

Hopefully it helps you you.

I do appreciate your ideas.

I was wondering if one of the board designers could chime in on the discussion? @saeed ?

Does the IOT shield when using USB and QMI occupy the UART pins? I get junk out messing up my UART serial connection.

Hello Ben,

Sorry for jumping in late.

Thank you for sharing your experience AbdulMelik.

The UART of the Cellular IoT Application Shield is occupied by the module.
Option to disconnect the UART from the module is not provided in this shield.

When the module is turned on, regardless of the connection type you have selected, the UART starts to communicate with the module. There is no physical switch that can disconnect the UART.

The best option would be cutting the UART traces from the Shield. [mentioned in the image below]
NOTE: Once the UART traces are cut you cannot use the UART communication for the shield.


I have a wish from you; can you add the more information about the UART and USB to Docs of each shield.
It may help to people who wants to use as companion computer or with other serial communicateable boards.

Thank You…

Thanks for this information. This is what I needed to know.

Hey @ben.boughton.

I was trying a very similar situation to the one you have above. I have connected the Cellular IOT Hat through USB to a Raspberry pi zero, and am trying to turn the module on without pressing the PWRKEY.

I have jumped GPIO 11 to the shield, and am just running a little python script which looks like:

import RPi.GPIO as GPIO # import RPi.GPIO module
from time import sleep # lets us have a delay
GPIO.setmode(GPIO.BCM) # choose BCM or BOARD
GPIO.setup(11, GPIO.OUT) # set GPIO11 as an output

GPIO.output(11, 1) # set GPIO11 to 1/GPIO.HIGH/True
sleep(0.5) # wait half a second
GPIO.output(11, 0) # set GPIO11 to 0/GPIO.LOW/False
sleep(0.5) # wait half a second

But the shield just doesn’t want to turn on. Was there anything else you had to do to turn the shield on other than jumping GPIO 11?