Question: I bought the new PI5, and I'm in a middle of a difficulty: This is a python/flask script - main.py - which call for a python script named shift_register.py and runs SRoutput(): from website import create_app from flask import send_from_directory, request import os, sys ctrl_hardware_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'ctrl_hardware')) sys.path.append(ctrl_hardware_path) from shift_register import SRoutput app = create_app() @app.route("/images/<path:filename>") def serve_image(filename): return send_from_directory("images", filename) # Definição dos bits a serem transmitidos #Rota para receber o parâmetro binário e usar no shift_register.py @app.route('/atualizar_shift_register', methods=['GET']) def atualizar_shift_register(): parametro = request.args.get('parametro') # Remove o prefixo '0b' se presente if parametro.startswith('0b'): parametro = parametro[2:] # Chama a função SRoutput do shift_register.py passando o parâmetro binário SRoutput(int(parametro,2)) #Converte o parâmetro binário para inteiro return f'Parâmetro binário {parametro} passado com sucesso!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True) #Defenido para executar em todos os ip's disponíveis pela rede  This is script shift_register.py: from gpiozero import OutputDevice import time import warnings warnings.filterwarnings("ignore") SER = OutputDevice(5, initial_value=None) # GPIO 5 - SER/DS (serial data input, SPI data) RCLK = OutputDevice(6) # GPIO 6 - RCLK/STCP SRCLK = OutputDevice(13) # GPIO 13 - SRCLK/SHCP (storage register clock pin, SPI clock) OE = OutputDevice(19) # GPIO 19 - Enable/Disable do SR SRCLR = OutputDevice(26) # GPIO 26 - O registo de deslocamento � limpo (ACTIVO BAIXO) # Setup dos pinos #GPIO.setup(SER, GPIO.OUT) #GPIO.setup(RCLK, GPIO.OUT) #GPIO.setup(SRCLK, GPIO.OUT) #GPIO.setup(SRCLR, GPIO.OUT) #GPIO.setup(OE, GPIO.OUT) # Inicializar a variavel correspondente a R1 # Reles 1 e 2 # checkshift = 0b0011 # Valor por defeito de espera nas operacoes do registo de deslocamento WaitTimeSR = 0.1 ##################################################### # Tabela de verdade do Registo de Deslocamento # SER | SRCLK | 'SRCLR | RCLK | 'OE | Sa�das/Fun��es # X X X X H Q's inactivas # X X X X L Q'S activos # X X L X X SR limpo # L + et H X X 0 no SR # H + et H X X 1 no SR # X X X +et X dados out ###################################################### # Inicaializa o pino de clear dos registos a 1 - o clear � controlado e feito numa fun��o SRCLR.on() #GPIO.output(SRCLR,1) # Enable do SR - sa�das sempre activas OE.off() #GPIO.output(OE, 0) # Fun��o que verifica e desloca os bits para armazenar no registo de deslocamento def SRoutput(checkshift): for i in range(9): shift = checkshift & 1 if shift == 1: print ("UM") WriteReg (shift, WaitTimeSR) else: print ("ZERO") WriteReg(shift, WaitTimeSR) checkshift = checkshift >> 1 OutputReg() # Defini��o da fun��o que envia os dados para o registo de deslocamento, # segundo o algoritmo descrito em baixo ### ALGORITMO ### # Enviar um bit para o pino SER/DS ### Depois de enviado, � dado um impulso de clock (SRCLK/SHCP) e o bit armazenado nos registos ###### ... um segundo bit � enviado, repetindo os dois passos em cima - � repetido at� estarem armazenados 8 bits ######### Por ultimo � dado um impulso aos registos (RCLK/STCP) para obter os 8 bits na saida def WriteReg (WriteBit, WaitTimeSR): SRCLR.off() #GPIO.output (SRCLK, 0) # Clock - flanco POSITIVO SER.value = WriteBit #GPIO.output (SER,WriteBit) # Envia o bit para o registo time.sleep (WaitTimeSR) # Espera 100ms SRCLK.on() #GPIO.output(SRCLK,1) # Funcao que limpa o registo def register_clear (): SRCLK.off() #GPIO.output(SRCLK, 0) time.sleep(WaitTimeSR) # espera 100ms SRCLK.on() #GPIO.output(SRCLK, 1) # Armazenar o valor no registo def OutputReg(): RCLK.off() #GPIO.output(RCLK, 0) time.sleep(WaitTimeSR) RCLK.on() #GPIO.output(RCLK, 1)  (Sorry, the comments are in Portuguese...) However, when I run main.py I get these errors:  [* Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 * Running on http://X.X.X.X:5000 Press CTRL+C to quit * Restarting with stat Traceback (most recent call last): File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 408, in pin pin = self.pins[info] ~~~~~~~~~^^^^^^ KeyError: PinInfo(number=29, name='GPIO5', names=frozenset({'BOARD29', 'BCM5', 5, '5', 'WPI21', 'GPIO5', 'J8:29'}), pull='', row=15, col=1, interfaces=frozenset({'', 'spi', 'dpi', 'gpio', 'i2c', 'uart'})) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/grinder/Documents/GitHub/Unnamed-Thesis/webserver/main.py", line 8, in <module> from shift_register import SRoutput File "/home/grinder/Documents/GitHub/Unnamed-Thesis/ctrl_hardware/shift_register.py", line 7, in <module> SER = OutputDevice(5, initial_value=None) # GPIO 5 - SER/DS (serial data input, SPI data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 103, in __call__ self = super().__call__(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gpiozero/output_devices.py", line 74, in __init__ super().__init__(pin, pin_factory=pin_factory) File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 75, in __init__ super().__init__(*args, **kwargs) File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 549, in __init__ pin = self.pin_factory.pin(pin) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 410, in pin pin = self.pin_class(self, info) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/gpiozero/pins/lgpio.py", line 126, in __init__ lgpio.gpio_claim_input( File "/usr/lib/python3/dist-packages/lgpio.py", line 755, in gpio_claim_input return _u2i(_lgpio._gpio_claim_input(handle&0xffff, lFlags, gpio)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/lgpio.py", line 458, in _u2i raise error(error_text(v)) lgpio.error: 'GPIO busy'  (I've changed all the GPIO's and they are all busy) Strangely enough, this worked with PI3 and RPi. What am I missing? Thank you!

Answer: Fix my problem: If anyone stumble upon this error this is how I fix it: import os os.environ['GPIOZERO_PIN_FACTORY'] = os.environ.get('GPIOZERO_PIN_FACTORY', 'mock') from gpiozero import OutputDevice  Addendum By setting 'mock' as the default, the code is configuring gpiozero to use a pin simulation (a simulated environment) if the environment variable is not explicitly defined. This setup is useful for testing or running the code in environments where physical pins are not available, allowing the code to continue functioning without interaction with real hardware. Only part of the problem is solved [Solution] In case if someone has the same problem: from website import create_app from flask import send_from_directory, request import os, sys ctrl_hardware_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'ctrl_hardware')) sys.path.append(ctrl_hardware_path) from shift_register import SRoutput app = create_app() @app.route("/images/<path:filename>") def serve_image(filename): return send_from_directory("images", filename) # Definição dos bits a serem transmitidos #Rota para receber o parâmetro binário e usar no shift_register.py @app.route('/atualizar_shift_register', methods=['GET']) def atualizar_shift_register(): parametro = request.args.get('parametro') # Remove o prefixo '0b' se presente if parametro.startswith('0b'): parametro = parametro[2:] # Chama a função SRoutput do shift_register.py passando o parâmetro binário SRoutput(int(parametro,2)) #Converte o parâmetro binário para inteiro return f'Parâmetro binário {parametro} passado com sucesso!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, **debug=True**) #Defenido para executar em todos os ip's disponíveis pela rede  On PI5, the argument debug=True make ALL GPIO's busy. Removing it resolved the problem