duzgun.org/blog
Sustituto del Blue&Me/ Alfa Romeo Giulietta 940/ 2011 · 2.0 JTDm 140

Cómo construí mi sustituto del Blue&Me: guía paso a paso

Sustituí el módulo Magneti Marelli Blue&Me roto (50521871) por una Raspberry Pi Zero W. Responde al Body Computer, lee los mandos del volante, reproduce música Bluetooth y permite hacer llamadas con la radio original y el micrófono del coche.

Estado, 2026-10-12: instalado en mi coche desde el 1 de octubre de 2026. El coche lo acepta, y funcionan la música, el texto de la pista y los mandos del volante. Las llamadas vuelven a funcionar: las probé el 2026-10-11 con la unidad ya instalada del todo, después de arreglar en el banco dos fallos de masa (paso 15). La persona a la que llamo todavía oye un ligero eco, que dejo para más adelante.
  • Línea de 3.3 V
  • Línea de 5 V
  • Masa
  • Peligro

01 Antes de empezar

En el artículo anterior expliqué qué es este proyecto y por qué lo construí. En esta guía cuento cómo lo hice, en quince pasos desde las primeras comprobaciones hasta la música y las llamadas en el coche.

Las medidas son de mi hardware y de mi coche. Otro puede dar resultados distintos. Por eso empecé midiendo y grabando, antes de transmitir mensajes o hacer más conexiones.

El software está en GitHub: github.com/crimeofheart/giulietta-blue-me.

Empezar escuchando

No encontré información publicada sobre el CAN del Giulietta 940. Partí de fmntf/fiatcan para el Fiat Doblò 263 y karolkrupa/alfa-blue-me para el Alfa 159. Pero describen otros coches y difieren en muchos identificadores. Comparé los mensajes con grabaciones de mi coche. Cada mensaje de las tablas del software lleva una referencia a su grabación, y el control de transmisión solo permite los confirmados por ellas.

Al instalarlo, la transmisión queda bloqueada en dos sitios: el controlador CAN está en modo de solo escucha y la lista de tramas permitidas en la aplicación está vacía. Puede recibir y decodificar el tráfico del coche, pero no puede transmitir. Activé la transmisión en el paso 12 con un comando que también permite desactivarla.

Reconstruir el protocolo sin un módulo en buen estado

Al principio no tenía un módulo funcionando que grabar, y el coche estaba configurado sin Blue&Me. Grabé el coche dos veces: primero tal como estaba y después de decirle al Body Computer que esperase un módulo Blue&Me. La comparación con blueandme-diff mostró qué buscaba el coche (paso 10). Más adelante saqué otros identificadores del tráfico que aún enviaba el módulo roto, como cuento en el artículo.

El valor PROXI es propio de cada coche

El valor PROXI sale del coche en el que se hace el montaje, no de mi proyecto. Son los seis bytes que envían sus módulos cuando pregunta el Body Computer. Dejé el mío fuera del código publicado, que lo lee de un ajuste de la configuración. El paso 10 explica cómo leerlo de una grabación; el paso 12, dónde ponerlo en la configuración de la Pi.

Dónde se hace cada prueba: banco indica trabajo fuera del coche; coche, trabajo conectado al bus del vehículo. Los pasos 1–6 se hacen en el banco. En el paso 7 conecté la Pi al coche por primera vez, solo para escuchar. No transmití hasta el paso 12.

Componentes necesarios

Primero van las piezas necesarias y después las opcionales. Al final he añadido las herramientas que utilicé.

ComponenteCant.Notas
Imprescindible
Raspberry Pi Zero W, con su cabecera de 40 pines1Bluetooth y Wi-Fi integrados, un núcleo, alrededor de 1 W. La Zero sin W no vale.
Tarjeta microSD, de 16 GB o más1Para Raspberry Pi OS Lite, 32 bits (paso 3). 16 GB es el mínimo que recomienda Raspberry Pi para la imagen Lite. La mía es una SanDisk de 64 GB.
Módulo CAN MCP2515 + TJA10501La típica placa azul. Su cristal puede ser de 8 o de 16 MHz, y hay que mirar cuál es. Necesita dos modificaciones (pasos 1–2). Con una placa SN65HVD230 no hacen falta.
Tarjeta de sonido USB con salida de audio y entrada de micrófono1Debería servir cualquier tarjeta que Linux reconozca como dispositivo de audio USB, sea C-Media o no. Usé un adaptador Ugreen USB-A con chip C-Media HS-100B, salida estéreo y entrada de micrófono mono. Con otra tarjeta comprobaría que el contacto exterior del jack de auriculares está realmente a masa y qué nombre aparece en aplay -l (paso 13). Si solo se quiere escuchar música, no hace falta entrada de micrófono.
Cable estéreo de 3.5 mm1De la salida de auriculares de la tarjeta a los pines de audio de la radio (paso 14).
Convertidor reductor (buck) de 12 V a 5 V, con salida USB1Usé un módulo TECNOIOT con entrada de 6–24 V y salida USB de 5 V. La Pi consume hasta unos 0.3 A. Lo importante es que siga alimentándola durante el arranque del motor. Antes de instalarlo conviene comprobarlo con una fuente regulable (paso 15).
Pines de tira, 2.54 mm, cuadrados de 0.64 mm32Cuatro tiras de ocho. Encajan tal cual en el conector del coche.
Tira de placa perforada, 2 × 16 agujeros con un marco de 5 mm1Se corta de un trozo de placa perforada. Sujeta los 32 pines y hace de conector hacia el enchufe del coche (paso 15).
Cable de conexión, tubo termorretráctil, pegamentoCable fino para la modificación de 5 V del paso 2.
Recomendado
Condensador electrolítico, 2200 µF, 35 V o más1Apoyo de alimentación durante el arranque, en paralelo con la entrada del buck (paso 15).
Diodo, 1N5822 o 1N40071Apoyo de alimentación durante el arranque, entre el pin 16 y el condensador.
Transistor PN22221Encendido con el contacto: la llave reinicia la Pi cuando el coche lleva aparcado más de tres días. Sin él, toca quitar y volver a poner el fusible F36.
Diodo, 1N40071Encendido con el contacto, entre base y emisor.
Resistencia, 100 kΩ2Encendido con el contacto.
Placa perforada, 3 × 7 cm110 × 24 agujeros, 2.54 mm. Para los circuitos de apoyo de alimentación y encendido con el contacto.
La caja original del Blue&Me1La caja del módulo averiado. Encaja en el soporte original del coche y su plástico deja pasar la señal Bluetooth.
Soporte impreso: marco y base de montaje1PETG o ASA. El PLA se ablanda en un coche aparcado.
Tornillos M3 y separadores, bridasSeparadores de 4 mm bajo el módulo CAN y de 5 mm bajo la Pi. Las bridas sujetan el buck y la tarjeta de sonido.
Opcional: llamadas manos libres
Cable de 3.5 mm1Del circuito del micrófono a la entrada de micrófono de la tarjeta.
Resistencia, 2 kΩ1Alimentación del micrófono.
Resistencia, 1 kΩ2Una en paralelo con la resistencia de 2 kΩ de la alimentación y otra en el divisor.
Resistencia, 10 kΩ1Divisor del micrófono.
Condensador electrolítico, 10 µF, 10 V o más1Impide que la tensión continua del micrófono llegue a la tarjeta.
Opcionales para facilitar el montaje
Adaptador Micro-USB OTG1Para el banco. Dentro de la caja la tarjeta va soldada a la Pi (paso 15).
Condensador cerámico, 100 nF1Solo si el transceptor CAN no lleva uno en su alimentación (paso 2).
Herramientas
Multímetro, soldador, bisturíImprescindible. El importante es el multímetro.
Un móvil1Imprescindible. El que va a poner la música.
Power bank USB1Imprescindible. Alimenta la Pi en todo el trabajo en el coche hasta el paso 15.
Adaptador OBD y MultiEcuScan en una tablet con Windows1Imprescindible para la alineación del paso 10.
Fuente de laboratorio regulable1Recomendado. Permite variar la tensión de entrada del convertidor y comprobar cuándo deja de funcionar, antes de instalarlo en el coche.
Impresora 3D1Opcional. Para imprimir el soporte y las plantillas de prueba.

02 Montaje en el banco pasos 1–6

Paso 1 — Identificar el módulo MCP2515

Dos cosas que dejé claras antes de cablear nada.

a) Frecuencia del cristal

Empecé por la inscripción del cristal de la placa CAN: 8.000 significa 8 MHz y 16.000, 16 MHz. Una foto de cerca con buena luz ayuda si cuesta leerla. El instalador necesita ese valor correcto; de lo contrario, más adelante el bus parecerá silencioso aunque el cableado esté bien.

b) Resistencia de terminación

Sin nada conectado, medí con el multímetro la resistencia entre los bornes de tornillo CAN-H y CAN-L.

  • ~120 Ω → la placa lleva una terminación. La mía la llevaba, y la quité. En la típica placa azul MCP2515+TJA1050 está justo entre los dos bornes, serigrafiada 120R y marcada 121. Vale desoldarla o levantarle una pata.
  • Decenas de kΩ → no hay terminación. Ese es el resultado bueno, y no es un circuito abierto: la resistencia de entrada diferencial del propio TJA1050 se queda siempre entre los pines, más o menos 20–100 kΩ. Con el transceptor montado nunca se lee infinito, así que no tiene sentido buscar una resistencia que no existe.
Por qué hay que quitar la terminación

El B-CAN del coche ya está terminado en sus dos extremos. Una tercera terminación baja la impedancia diferencial y puede dejar el bus sin funcionar para todos los módulos, no solo para el que se añade. A dos personas les pasó exactamente esto antes que a mí: a karolkrupa en el Alfa 159 y a un usuario de fiatcan en el Doblò. Llama la atención el contraste con fmntf, que añadió un puente de 120 Ω: él estaba sondeando una sola centralita aislada en el banco, donde nada más termina el bus. En esto, el banco y el coche piden justo lo contrario.

Resultado de las comprobaciones

ValorConsecuencia
Cristal8 MHzinstall.sh --oscillator 8000000
Terminación (121, 120 Ω)desoldadaCAN-H↔CAN-L midió después 45 kΩ: solo el transceptor, sin terminación
Condición para seguir

La frecuencia del cristal está clara, y entre CAN-H↔CAN-L se lee muy por encima de 120 Ω: decenas de kΩ es lo correcto, y un circuito abierto de verdad no es lo esperable.

Paso 2 — Resolver el problema de los 5 V

La placa tiene un solo pin VCC que alimenta los dos chips. Ese es todo el problema.

El transceptor TJA1050 necesita 5 V para mover un bus CAN: está especificado para 4.75–5.25 V y no tiene modo de 3.3 V. Así que la placa se alimenta a 5 V, el controlador MCP2515 funciona también a 5 V, y un chip que funciona a 5 V saca sus salidas a 5 V. Una de esas salidas es MISO, y MISO va directa al GPIO9 de la Pi, que no tolera 5 V y no tiene diodos de protección.

Sin modificar — una sola línea a 5 VMCP2515VCC = 5.0 VMISO5.0 VGPIO9máx. 3.3daña el SoCLíneas separadas — controlador a 3.3 VMCP2515VCC = 3.3 VMISO3.3 VGPIO9correctoTJA1050 sigue a 5 V
Lo único que cambia es la tensión en MISO. El cableado SPI, los 5 V del transceptor y el lado CAN se quedan como estaban.
"Parece que funciona" no es una prueba

Aplicar demasiada tensión a un GPIO puede dañarlo sin que se note enseguida. La corriente que pasa por las estructuras de protección puede degradarlo con el tiempo. Que funcione una hora no demuestra que la conexión sea segura. Por eso hice la modificación antes de alimentar la placa por primera vez.

Tres opciones

Opción A · recomendada

Separar las alimentaciones

Corté la pista de cobre entre el pin VCC de la placa y el TJA1050, y luego soldé un cable para darle al transceptor sus 5 V por separado.

Un corte, un cable, ninguna pieza extra.

Opción B

Adaptador de nivel en MISO

La placa se queda a 5 V y se pone un adaptador de nivel 3.3 V/5 V solo en la línea MISO, la única que empuja hacia la Pi.

No hay que cortar la placa, aunque se añade un componente y tres soldaduras al circuito SPI.

Opción C · sin cortar la placa

Comprar una placa de 3.3 V

Un módulo basado en el SN65HVD230 funciona de serie a 3.3 V, controlador y transceptor incluidos.

No hay nada que modificar. Barato. Para quien no quiera cortar la placa, es la opción buena.

En rigor solo importa MISO. MOSI, SCK y CS son salidas de la Pi y entradas del MCP2515: la Pi mete 3.3 V en un chip de 5 V, que lo lee sin problema como un nivel alto. MISO e INT son las dos líneas que van en el otro sentido, e INT es de drenador abierto. Por eso la opción B se apaña solo con MISO. Separar los raíles las arregla todas de una vez.

Qué significa de verdad "cortar la pista"

Una pista es una tira de cobre impresa en la superficie de la placa de circuito. Hace el trabajo de un cable: es plana, de una fracción de milímetro de ancho, está pegada a la placa y cubierta por la laca verde que se ve (la máscara de soldadura). Cada conexión del módulo es una de estas.

Cortarla es romper físicamente ese cobre con una cuchilla afilada para que la corriente ya no pueda pasar: raspé un pequeño hueco a través de la pista, hasta la fibra de vidrio de debajo. La placa no se corta, y no se dobla ni se quita nada. Lo que hice fue una interrupción a propósito en una sola conexión, de más o menos un milímetro de ancho, en una pista más fina que una raya de lápiz.

Una vez rota, los dos extremos quedan separados eléctricamente. Entonces soldé un cable a uno de ellos y lo alimenté desde otro sitio. Esa es toda la modificación: romper una conexión y volver a alimentar uno de sus lados.

Antes — una pista continuaPin VCCTJA1050pista de cobre, bajo el barniz verdeDespués — cerca de 1 mm de cobre raspadoel huecosigue alimentando el MCP2515 (3.3 V)ya aislado — aquí va el cable de 5 V
Dos vistas de la misma pista, ampliadas. La interrupción es pequeña, un arañazo de bisturí, pero es una separación eléctrica real y permanente, y un multímetro la verá como circuito abierto.

Encontrar la pista correcta sin adivinar

Localicé la pista con el multímetro en lugar de fiarme de un dibujo de la placa. La misma comprobación sirve aunque el módulo tenga otra distribución. Con el multímetro en continuidad, la secuencia es esta:

  1. Puse una punta en el pin VCC de la cabecera de la placa y la dejé ahí.
  2. Fui tocando con la otra punta cada pin del TJA1050 (el chip pequeño de 8 pines más cercano a los bornes de tornillo del CAN) hasta que pitó. Ese es el pin de alimentación: el pin 3 según la ficha del TJA1050.
  3. Hice lo mismo en el MCP2515 (el chip grande) para encontrar su pin de alimentación. Apunté los dos.
  4. El cobre que va entre el pin VCC y el pin de alimentación del TJA1050 es lo que hay que cortar. Lo seguí con la vista; suele ser corto.

Así sabía qué dos pines debían quedar separados y podía comprobarlo con el multímetro después del corte.

El corte, en el lado del transceptor y no en el del controlador

En los dos sentidos se consigue la misma separación de raíles. Pero si el pin de la cabecera se queda unido al MCP2515, el pin donde se enchufa el cable puente es el de 3.3 V: es más difícil conectarlo al revés más adelante, y coincide con todo lo que hay publicado.

El corte, en el lado correcto del condensador de desacoplo

Normalmente hay un condensador pequeño en la alimentación del TJA1050. Tiene que quedarse con el transceptor, en el lado de 5 V del corte. Si la placa no lleva condensador ahí, al terminar hay que soldar uno de 100 nF entre el pin de alimentación del transceptor y masa.

Qué hace falta

  • Soldador de punta fina y estaño fino
  • Bisturí o cúter de precisión para el corte
  • Multímetro con pitido de continuidad lo importante
  • Cable fino aislado 28–30 AWG, ~60 mm
  • Condensador cerámico de 100 nF solo si no hay ya uno
  • Lupa o cámara del móvil para encontrar la pista y revisar el corte
  1. Antes de nada, una foto de la placa

    Hice una foto de cerca y con buena luz antes de modificar nada. Sirve de referencia si, al cortar, deja de estar claro qué lado va a cada chip.

  2. Raspar hasta atravesar el cobre

    Rasqué la laca verde a través de la pista y luego corté el cobre de debajo. Bastaron dos o tres pasadas suaves con la cuchilla cruzada sobre la pista, no a lo largo de ella. Dejé un hueco de alrededor de un milímetro de ancho, hasta ver la propia placa.

    Mejor varias pasadas suaves que una fuerte que haga un surco en la placa o se vaya a una pista vecina.

  3. Comprobar el corte con el multímetro

    Del pin VCC de la cabecera al pin de alimentación del TJA1050: ahora tiene que dar abierto, sin pitido. Del pin VCC de la cabecera al pin de alimentación del MCP2515: tiene que seguir pitando. Si alguno de los dos sale al revés, toca parar y volver a mirar la placa.

  4. Soldar el cable de 5 V

    Estañé el cobre que había quedado a la vista en el lado del TJA1050 y le soldé el cable. Lo dejé corto y lo sujeté (vale cola caliente o cinta): un cable que se suelta dentro de un coche se lleva el pad por delante.

  5. Comprobar que no hay cortos antes de dar corriente

    Los dos pines de alimentación tienen que ser ya independientes entre sí, y ninguno puede estar en corto con masa. Solo cuando lo comprobé conecté algo a la Pi.

1231Cable de 5 V soldado a laalimentación del TJA1050 (círculo rojo)2Transceptor TJA1050,marcado NXP TJA1050/C3Terminación 120R, marcada121 — se quita en el paso 1foto: terilenard/mcp2515-tja1050-wiring
Así queda la misma modificación en una placa real. El círculo rojo es del autor original y marca dónde va el cable de 5 V: en el lado del corte que da al transceptor. Bajo el chip se lee 120R: esa es la terminación, y la pieza marcada 121 es la que desoldé en el paso 1.
Condición para seguir

MISO no puede darle a la Pi más de 3.3 V. Con el módulo alimentado y la Pi desconectada, en el pin de alimentación del MCP2515 se miden 3.3 V y en el del TJA1050, 5 V.

Paso 3 — Grabar la tarjeta SD

Usé Raspberry Pi Imager en mi ordenador.

  • Sistema: Raspberry Pi OS Lite (32-bit). No la versión de escritorio. Tiene que ser de 32 bits, porque la Zero W es ARMv6.
  • En "Edit Settings" puse: nombre de host blueandme; SSH activado (clave o contraseña); usuario y contraseña; SSID, contraseña y país del Wi-Fi.

Arranqué la Pi alimentada por USB sin nada más conectado, esperé unos dos minutos y entré con ssh <user>@blueandme.local.

Condición para seguir

Ya puedo entrar en la Pi por SSH.

Paso 4 — Instalación

# on your dev machine
git clone https://github.com/crimeofheart/giulietta-blue-me
cd giulietta-blue-me
rsync -a --exclude .git --exclude .venv ./ <user>@blueandme.local:~/giulietta-blue-me/

# on the Pi
cd ~/giulietta-blue-me
sudo ./install.sh --dry-run --oscillator 8000000     # read what it will do
sudo ./install.sh --oscillator 8000000               # 8 MHz, confirmed in step 1
sudo reboot

La primera instalación tarda un rato en la Zero W; la mayor parte del tiempo se va en instalar paquetes con apt. Si no hay un paquete preparado para esa versión del sistema en packages/, también se compila bluez-alsa para las llamadas de banda ancha, lo que añade unos diez minutos (paso 13). La instalación reduce además el tiempo de arranque quitando componentes innecesarios en un equipo sin pantalla: initramfs, controladores de pantalla y cámara, y servicios de módem, disco y teclado. Los controladores CAN y Bluetooth se cargan al principio (tiempos en el paso 15). Si los paquetes ya están instalados, repetir el proceso lleva unos dos minutos: omite apt y reinstala la aplicación.

Condición para seguir

install.sh termina con "configuration is valid".

Paso 5 — Cablear el MCP2515 a la Pi

Primero apagué la Pi (sudo poweroff, y esperé a que el LED se parase).

El pin 1, antes de contar nada

Todos los números de abajo son posiciones físicas de pin, y solo significan algo cuando se sabe qué extremo de la cabecera es el pin 1. Hay tres formas de encontrarlo, de más a menos fiable:

  1. El pad cuadrado. El pin 1 es el único pad cuadrado de la placa; los otros treinta y nueve son redondos. Si la cabecera ya está soldada, se le da la vuelta a la placa y se miran las soldaduras por debajo.
  2. El contorno serigrafiado J8. El pin 1 es la esquina de dentro más cercana a la ranura de la tarjeta microSD.
  3. La propia ranura de la tarjeta. El pin 1 está en ese extremo de la cabecera, nunca en el extremo opuesto, donde están los pads RUN y el segundo agujero de montaje.

Desde ahí la numeración avanza por parejas a lo largo de la cabecera, alejándose de la ranura: 1 y 2 en la esquina, luego 3 y 4, luego 5 y 6. Los impares quedan en la fila más cercana a la ranura; los pares, en la fila más cercana al borde exterior de la placa.

borde largo exterior de la placaJ839GND45V22INT24CS13V319MOSI21MISO23SCK◀ la ranura microSD está en este extremo — el pin 1 está aquíextremo opuesto — pads RUN, 2.º agujero de montaje ▶Números físicos de pin, dentro de cada pad. Los pines impares son la fila más cercana a la ranura de la tarjeta.
Dibujado tal como está la placa en realidad: la fila más cercana al borde exterior lleva los pines pares, la fila más cercana a la ranura microSD lleva los impares, y el pin 1 está en el extremo de la ranura. Números físicos de pin, no números de GPIO. Los ocho pines caen en tres sitios: la alimentación en la esquina del pin 1, el SPI y la interrupción a dos tercios del recorrido, y la masa del módulo en el extremo opuesto, el pin 39 (el pin 6 lleva la masa del coche, paso 7). La fotografía de abajo es la misma cabecera, con los mismos ocho pads.
PIN 1el único pad cuadrado,en el extremo microSD14391921222324THE EIGHT PINS YOU USE — PHYSICAL NUMBERS13V3 → VCC del módulo45V → cable del TJA105039GND19MOSI21MISO22INT / GPIO2523SCK24CS / CE0Los pines impares van por la fila más cercana a la ranura microSD. Los pares van por la fila más cercana al borde exterior de la placa.La numeración avanza por parejas alejándose de la ranura: 1/2 en la esquina, luego 3/4, 5/6, y así hasta 39/40.foto: Gareth Halfacree, CC BY-SA 2.0, vía Wikimedia Commons — anotada
Los mismos ocho pines en una Pi Zero W real. Esta placa tiene pads vacíos en lugar de una cabecera soldada, y eso es lo que hace visible el pin 1: es el único pad cuadrado de toda la placa, y está en el extremo más cercano a la ranura de la microSD, dentro del contorno serigrafiado J8. Todos los demás pads son redondos. Si la cabecera ya está soldada, basta con darle la vuelta a la placa: el pad cuadrado se ve por debajo.
MóduloSeñal de la PiPin físicoNotas
VCC (MCP2515, tras el corte)3.3 V1Alimenta solo al controlador
Alimentación del TJA1050 — el cable que añadí5 V4El pin 2 es equivalente
GNDGND39Con una masa basta; vale cualquier pin de masa. En este montaje el pin 6 lleva la masa del coche (paso 7)
CSGPIO8 / CE024Coincide con spi0-0 en el overlay
MOSIGPIO1019La Pi habla, el módulo escucha
MISOGPIO921La línea por la que existe la modificación
SCKGPIO1123Reloj
INTGPIO2522Debe coincidir con interrupt=25 en el overlay
123451Bornes de tornillo CAN-H / CAN-L2el cable de 5 V añadido, en amarillo3cristal: 8.000 o 16.0004Controlador MCP25155Cabecera de 8 pines, cinta hacia la Pifoto: terilenard/mcp2515-tja1050-wiring
Así queda terminado. El cable amarillo al aire es toda la modificación: sale de la placa junto al transceptor y va a un pin de 5 V de la Pi, mientras que la tira de la cabecera de abajo lleva los 3.3 V, la masa y las cuatro líneas SPI.
El segundo error más frecuente

MOSI y MISO cruzados. No rompe nada, solo da un bus que nunca se inicializa, y se ve idéntico a un valor de cristal equivocado. Es más fácil comprobarlo dos veces en ese momento que depurarlo después.

Le di corriente y comprobé:

blueandme-status

Tiene que salir interface present ok, link state UP, bitrate 50000, bus errors 0, spidev present ok. Si can0 no existe:

dmesg | grep -i -E "mcp251|spi"      # driver probe failures show here
ls /dev/spidev*                       # SPI enabled?
grep -E "spi|mcp2515" /boot/firmware/config.txt

mcp251x spi0.0: MCP2515 successfully initialized es lo que quería ver. Cannot initialize MCP2515 casi siempre es el cableado o el valor del oscilador equivocado.

Condición para seguir

blueandme-status muestra can0 levantada a 50000 con cero errores.

Paso 6 — Demostrar que el software funciona, sin coche

Todo se puede probar sobre una interfaz CAN virtual antes de meter el coche de por medio.

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan && sudo ip link set up vcan0
tests/fixtures/fetch.sh               # once: the Doblò recordings some tests read
python3 -m pytest                     # the vcan0 tests now run too
blueandme-protocol-map                # the profile tables, generated from code
Condición para seguir

Todas las pruebas deben pasar. El mapa del protocolo debe mostrar las tramas del perfil Giulietta.

03 En el coche pasos 7–10

La alimentación, siempre

Alimenté la Pi con un power bank USB en todo el trabajo de captura. Los 12 V del coche no van a la Pi. El USB de la Pi no va al coche. La tablet desde la que la manejaba iba también con su propia batería: una tablet cargándose del coche mientras está unida a la Pi crea justo el camino de masa que el power bank está para evitar.

Paso 7 — Primer contacto: solo escucha

Usé dos conectores distintos: uno para la Pi y otro para la tablet. Cada uno cumple una función.

La Pi y las placas conectadas junto al salpicadero abierto.
El montaje provisional durante una de las primeras pruebas en el coche. La tarjeta de sonido y la protoboard que se ven aquí no forman parte de este paso; llegan más adelante en la guía.
LA PI — graba el busBlue&Meconectorvacante —módulo retiradoCAN-H · pin 30CAN-L · pin 14GND · pin 15 — pasa de largo el módulo, directo a un pin de masa de la PiMódulo MCP2515H L2 víasbornesSPIPi Zero Wsolo escuchaUSBpower bankLA TABLET — habla con las ECU (solo paso 10)Toma OBD2bajo el salpicaderopines 6 / 14Adaptador OBD USBTablet con WindowsAlfaOBD / MultiEcuScanLos dos caminos no se tocan nunca. En el paso 10 los dos conectores están activos a la vez, y por eso la Pi no usa el OBD2.
La Pi se engancha al conector vacante del Blue&Me. La tablet usa la toma OBD2. Tenerlos separados es lo que permite que la captura H grabe el bus mientras se hace la alineación que lo cambia.

Lo que hay que buscar

El enchufe del lado del mazo es la mitad que se queda en el coche: carcasa azul, palanca de bloqueo negra, el mazo que entra por detrás y dos filas de pequeños alojamientos cuadrados en la cara de acoplamiento. En mi coche cuelga suelto, porque el módulo original ya no está. Me conecté ahí, y así pude acceder a las señales sin cortar el cableado original.

Las fotografías identifican los dos conectores y los números marcados en su carcasa. NO indican qué lleva cada pin: eso está en el mapa de abajo. Los dos conectores no aparecen con la misma orientación en las fotos, así que hay que guiarse por esos números y no por la posición.

Conector macho azul alojado en la caja del módulo original.
El conector del módulo, visto desde la cara de acoplamiento.
Conector hembra azul con números en las esquinas y referencias del cierre.
El conector del coche, visto desde la cara de acoplamiento; se conservan los números de las esquinas.
Conector del coche, 32 vías — pin 16 arriba a la izquierda, pin 32 abajo a la izquierda, pin n+16 justo debajo del pin n16+12V PERM515GND314CAN-L31312111098MIC TIP1765AUD L24GND32132CONTACTO43130CAN-H3292827262524MIC GND12322AUD R221AUD GND2201918171 micro2 audio3 CAN4 contacto5 12 V al buckmasasin cablear
PasoPinEtiquetaVa a
18MIC TIP (micro +)Unión A del circuito del micrófono: 2 kΩ ‖ 1 kΩ (unos 670 Ω, así quedó en el coche) desde el pin 2 de la Pi (5 V), y la pata + del de 10 µF. La señal sale de la unión B hacia la punta del conector del micro
124MIC GND (micro −)Unión G, la unión de masa
25AUD LPunta del conector de audio
222AUD RAnillo del conector de audio (el del medio)
221AUD GNDManguito del conector de audio. El conector va en la salida de auriculares de la tarjeta de sonido
330CAN-HBorne de tornillo H del MCP2515
314CAN-LBorne de tornillo L del MCP2515
315GNDUnión G, que también lleva la masa de la Pi (pin 6). El paso 5 añade aquí un segundo cable, al K1 de la placa (apoyo de alimentación durante el arranque, luego buck IN−)
432IGNITIONCircuito de encendido con el contacto: resistencia de 100 kΩ a la base del PN2222. Hay 12 V en MAR; nunca debe conectarse directamente a un pin de la Pi
516+12V PERMEl I10 de la placa: diodo y 2200 µF (apoyo de alimentación durante el arranque), luego buck IN+. Con el F36 quitado mientras se cablea
–4GNDNada: de reserva. Es la masa de la toma USB de la guantera y no está comprobado que llegue al chasis, así que todos los retornos se quedan en el 15
El pin 16 está arriba a la izquierda y el 32 abajo a la izquierda. A la derecha están el 1 (arriba) y el 17 (abajo), junto a las marcas “1” y “17” de la carcasa. Seguí el orden de la tabla: micrófono, audio, CAN, contacto y, al final, los 12 V del convertidor. Las posiciones dibujadas con línea discontinua quedan sin cable.

El mapa de pines

Lo corroboran dos fuentes independientes: un hilo alemán sobre el Alfa 159/Brera que documenta el conector del módulo M162, y un hilo italiano de ClubAlfa sobre montar el Blue&Me precisamente en un Giulietta. Coinciden entre sí y con los números que este proyecto ya usaba.

PinesFunciónHace falta para
30 / 14CAN-H / CAN-L — "CAN alta" / "CAN bassa"Paso 7, la toma
15MasaPaso 7, la toma
16 / 3212 V permanentes / 12 V de contactoSolo en el paso 15. Hasta entonces, ni tocarlos.
5 / 22 / 21Audio izquierdo / derecho / masaPaso 14
7 / 23 / 25Audio+ / Audio− / MUTE, hacia la radioQuizá en el paso 14
8 / 24Micrófono, desde el techo. Amplificado; necesita su propia alimentación de 5–8 VPaso 14, llamadas
3 / 19 / 20 / 4 / 31USB D+ / D− / VCC / masa / malla, hacia la toma USB del cocheNo se usa. El módulo alimentaba VCC, así que la toma probablemente esté muerta mientras falte (sin verificar)

Por qué me fío de la disposición aunque la foto esté tomada en ángulo. La carcasa figura como TE/AMP 968265-1, que TE cataloga como 32 posiciones en dos filas a 2.54 mm. La cara de acoplamiento de la foto muestra dos filas. Y las funciones se emparejan exactamente como cabría esperar de dos filas de dieciséis: 3/19 es el par diferencial del USB, 4/20 su par de alimentación, 8/24 el par del micrófono, 14/30 el par CAN, 16/32 las dos alimentaciones de 12 V. Cada par cae en una columna. Que coincidan tres indicios independientes es la razón de que esto esté dibujado y no supuesto.

Para conectar sin introducir puntas de prueba en el enchufe, las piezas correspondientes son la carcasa 929053-2 y los contactos 144969-1.

Lo primero, encontrar los pines de 12 V

La columna 16 lleva las dos alimentaciones de 12 V y está pegada a la masa que se busca, en la columna 15. Un alojamiento de diferencia separa una toma que funciona de un cortocircuito en una alimentación permanente de batería.

Así que localicé el 16 y el 32 antes de ponerme a buscar el 30, el 14 y el 15. Medí contra el chasis con la llave en MAR: esos dos están a tensión de batería y ningún otro de este conector debería estarlo. Una vez localizados, conté a partir de ellos.

Dónde va de verdad cada cable

Lado del cochePin del Blue&MeVa a
CAN-H30Borne de tornillo H del módulo MCP2515
CAN-L14Borne de tornillo L del módulo MCP2515
GND15No a la regleta de tornillos: es de 2 vías, solo H y L. Directo a un pin de masa libre de la cabecera de la Pi: el 6 en este montaje (o el 9, 14, 20, 25, 30, 34, 39: son todos el mismo nodo)

La conexión de masa es necesaria. Con una batería externa, la masa de la Pi está separada de la del coche. CAN es diferencial, pero las tensiones de entrada del transceptor deben mantenerse dentro de un margen respecto a la masa del coche. Por eso uní ambas masas. Sin esa conexión los mensajes pueden leerse mal o no leerse.

Vale cualquier pin de masa libre: son todos el mismo nodo. En este montaje la masa del coche está en el pin 6 y la masa del propio módulo en el pin 39.

Estos números de pin eran heredados; el coche los ha confirmado

30 / 14 / 15 salen del artículo de fmntf sobre el Doblò 263. En este coche son correctos: todas las capturas desde el 2026-09-13 se tomaron ahí, con cero errores de bus, y por el conector pasa todo el B-CAN, diagnosis (18DA…) incluida. Por la toma OBD solo pasa tráfico de carrocería, sin nada de diagnosis, así que las capturas de las dos tomas no se comparan nunca.

Si se invierten CAN-H y CAN-L en esta conexión de solo escucha, el controlador no transmite y candump no muestra nada. Ese error no daña el equipo. Lo que sí supone un peligro es tocar los pines 16 y 32, que llevan 12 V. Hay que identificarlos primero y evitar su contacto con las conexiones de señal.

Con el coche dormido y un multímetro, un par CAN marca más o menos 60 Ω entre las dos líneas (dos terminaciones de 120 Ω en paralelo) y cada línea da abierto contra el chasis. Cuando sale, es una confirmación útil, pero el B-CAN es un bus de baja velocidad y puede estar terminado de otra forma, así que una lectura distinta de 60 Ω no demuestra que los pines estén mal.

Después, escuchar

candump -e can0,#FFFFFFFF     # errors and data, everything

Giré la llave a MAR. Tienen que aparecer tramas.

La misma toma para todas las capturas

El paso 10 compara la captura H con la captura E, y dos capturas tomadas en puntos distintos del bus no son comparables: la diferencia mezclaría "tramas que el Body Computer espera ahora" con "tramas que se ven desde otro sitio".

La toma OBD2, y por qué la Pi normalmente no la usa

OBD2 / J1962, vista de frente a la toma del coche1B-CAN-H234GND5GND6CAN-H789B-CAN-L1011121314CAN-L1516+12V6 / 14 — el CAN de alta velocidad que usa el adaptador de la tablet para AlfaOBD1 / 9 — B-CAN de carrocería, H / L (medido aquí, captura M); solo carrocería16 — 12 V permanentes. Nunca se toca con la Pi conectadaPin 1 arriba a la izquierda, de frente; fila superior 1–8, inferior 9–16
El adaptador de la tablet usa los pines 6 y 14. Solo hay una toma, y en el paso 10 la necesita el software de centralitas mientras la Pi graba: esa es toda la razón de que la Pi se enganche al conector del Blue&Me.

El B-CAN de carrocería está en los pines 1 (CAN-H) y 9 (CAN-L) del OBD2, con la masa en el pin 4 o el 5. Lo medí en este coche el 2026-09-21, a 122 tramas/s y con los ID de siempre (captura M), y el pinout quedó confirmado en el coche. En una versión anterior de esta guía supuse los pines 3 / 11, y estaba mal. Es una toma válida para el tráfico de carrocería, pero no oye la diagnosis. La captura N no contiene ni una sola trama 18DA… a lo largo de una alineación PROXI, una lectura de averías y un borrado de averías. Así que cualquier trabajo de alineación necesita la Pi en el conector del Blue&Me, y el adaptador de la tablet necesita un divisor OBD2 en Y si va a compartir la toma. Las capturas M y N son las únicas que hice aquí; no las comparo con las hechas en el conector.

Si no se ve nada

  1. ¿Está despierto el coche? La llave tiene que estar en MAR, o una puerta abierta.
  2. Cruzar CAN-H y CAN-L. Probar no hace daño, y es un error muy frecuente.
  3. ¿Está conectado el cable de masa? Sin él el bus no se lee.
  4. ip -details -statistics link show can0: si el contador bus-error sube, está mal la velocidad de bits o el oscilador; si se queda en cero y no llegan tramas, es que no hay conexión eléctrica.
  5. Volver a comparar la marca del cristal con lo que se le pasó a install.sh.
Condición para seguir

Con la llave en MAR, candump debe mostrar un flujo continuo de tramas.

Paso 8 — Captura A: ¿11 bits o 29 bits?

El comando más importante de todo el proyecto. Empecé a grabar con la llave quitada, luego giré a MAR y esperé 60 segundos.

Esperar a "recording can0 ->" antes de girar la llave

Esperé a que la herramienta anunciase que estaba grabando antes de girar la llave. En una Zero W tarda unos cuatro segundos en arrancar, y la petición PROXI llega en los primeros segundos tras despertar la red. Girar la llave justo después de pulsar Enter puede dejar fuera precisamente el mensaje que busca la captura A. Ese tiempo también importa en las grabaciones siguientes.

mkdir -p ~/captures
TAP="Blue&Me connector 30/14/15"    # the same tap point for every capture

blueandme-capture --scenario A --out ~/captures/A-ignition-on.log \
                  --tap-point "$TAP" --duration 90

Miré las últimas líneas de la salida:

ID widths seen: {'29-bit': 4127}   <- the answer

Comprobar la anchura del identificador. El valor esperado es de 29 bits. El autor de alfa-blue-me lo indicó para el Giulietta y lo confirmé en el mío. Si la grabación muestra 11 bits, es un bus distinto y los mensajes de esta guía no son aplicables. Hay que entender esa diferencia antes de continuar.

blueandme-decode ~/captures/A-ignition-on.log --profile doblo263 --summary

El perfil del Doblò es mi plantilla estructural. Contaba con que algunos ID coincidieran por suerte y la mayoría no. Lo que importa es si se mantiene la forma topic<<16|node: ¿se agrupan los ID en un conjunto pequeño de mitades bajas 0x40xx?

Condición para seguir

El ancho de los identificadores y la lista de nodos están claros.

En mi coche (2026-09-13): 29 bits.

Captura A: 4157 de 4157 tramas de 29 bits, cero errores de bus. Los ID son topic<<16 | node, como en el Doblò. Nodos: 4000 Body Computer, 4003 cuadro de instrumentos, 4005 radio, y 4001 4002 4006 400A 4018 401A; el Blue&Me es el 4021.

Paso 9 — El resto de las capturas

Hice una captura por escenario, sin prisas. Las comparaciones posteriores dependen de que estas grabaciones estén bien hechas.

# B — key MAR -> OFF, start recording first
blueandme-capture --scenario B --out ~/captures/B-ignition-off.log \
   --tap-point "$TAP" --duration 90

# E — baseline: key in MAR, engine off, touch nothing at all
blueandme-capture --scenario E --out ~/captures/E-baseline.log \
   --tap-point "$TAP" --duration 180

# C — one button at a time, 3 presses each, 2 seconds between
blueandme-capture --scenario C --out ~/captures/C-buttons.log \
   --tap-point "$TAP" --duration 180 \
   --label "vol+ x3, vol- x3, next x3, prev x3, src x3, mute x3, menu x3"

# F — radio: change source, volume up/down, mute
blueandme-capture --scenario F --out ~/captures/F-radio.log \
   --tap-point "$TAP" --duration 120 \
   --label "FM, volume, mute, source cycling"

Después busqué la trama de los botones:

blueandme-diff ~/captures/E-baseline.log ~/captures/C-buttons.log --by bits

Busqué un ID cuya carga volviera a todo ceros entre pulsaciones y cuyos bits cambiantes formaran una máscara limpia. Lo comparé con las máscaras que comparten las dos plataformas de referencia: 0x8000 vol+, 0x4000 vol−, 0x2000 silencio, 0x0400 fuente, 0x0080 menú, 0x0040 windows.

Condición para seguir

Cuatro capturas en disco y una candidata a trama de botones.

En mi coche (2026-09-13).

Las capturas A, B, E, C y F están en disco. La trama del volante es 06354000, del Body Computer: el mismo ID del Doblò, con las mismas máscaras, más siguiente 1000 y anterior 0800. Se repite a 2 Hz, con una trama extra en cada cambio. La captura C solo tiene pulsaciones cortas.

Paso 10 — Captura H: volver a alinear PROXI con el Blue&Me

Esto hace parpadear el cuentakilómetros a propósito

Es reversible: al volver a alinear sin Blue&Me, el parpadeo se acaba.

Con el adaptador OBD2 y el software de centralitas lancé la alineación PROXI con el Blue&Me presente en la configuración del Body Computer. El módulo seguía sin estar físicamente, así que el Body Computer buscó un nodo que no contesta nunca.

Conecté la Pi al enchufe del Blue&Me y dejé OBD2 para la tablet. Así pude usar ambas a la vez. Primero inicié la captura y, mientras seguía grabando, ejecuté la alineación.

blueandme-capture --scenario H --out ~/captures/H-proxi-with-bm.log \
   --tap-point "$TAP" --duration 180
blueandme-diff ~/captures/E-baseline.log ~/captures/H-proxi-with-bm.log

Si $TAP es distinto entre E y H, la comparación no significa nada: antes de fiarme, comprobé que los dos archivos .meta.json coincidían.

La comparación H − E mostró los mensajes que el Body Computer espera de Blue&Me: la consulta PROXI, sus repeticiones y las consultas de estado al nodo ausente. Utilicé esta comparación en lugar de una grabación del módulo original funcionando; el mío estaba averiado y no podía darme ese ejemplo.

Ya que estaba en el software de centralitas, miré también:

  • si la radio necesita un ajuste propio para activar Blue&Me / la fuente multimedia; en ese caso, enviar los mensajes CAN no sería suficiente
  • si se puede leer el valor PROXI guardado en el nodo Blue&Me (el plan B, por si los nodos no comparten un mismo valor)
Condición para seguir

La comparación H − E debe mostrar diferencias. También hay que revisar la información de la radio en el software de diagnosis.

En mi coche (2026-09-21): el PROXI está resuelto.

Más o menos un segundo después de despertar la red, el Body Computer envía 1E114000#. Los nodos 400A 4003 401A contestan en milisegundos con el mismo valor de seis bytes: el valor es compartido. A un nodo que se queda callado se le dan tres reintentos, y que algo no cuadre es lo que hace parpadear el cuentakilómetros.

Apunté los seis bytes con los que contestan los nodos de mi coche. En una captura son las tramas 1E11400A, 1E114003 y 1E11401A, justo después de 1E114000#. Ese es el valor PROXI de un coche; va a la configuración de la Pi en el paso 12.

El parpadeo lo arreglé en el propio Body Computer. Su registro PROXI 2023 necesita el grupo 6F 04 00 05 en 02, "telemática presente"; lo escribió experiments/node61/write_bc_record.py, guardando un archivo para deshacer. Ese script cambia la configuración del coche: antes de usarlo hay que leer experiments/README.md en el repositorio, y antes de nada leer el registro y guardarlo. Durante la alineación la Pi contestó también a la diagnosis como unidad telemática, 61, igual que hace el cuadro con 60. Desde entonces el coche espera un nodo Blue&Me, así que el parpadeo vuelve cada vez que falta la Pi. La radio no necesita nada propio (paso 12).

04 Perfil y primera transmisión pasos 11–12

Paso 11 — Contrastar el perfil con las capturas banco

Las tramas que la Pi espera y envía están en blueandme/protocol/profiles/giulietta940.py, cada una con la grabación de mi coche en la que se vio: el ancho de 29 bits, la trama del volante con sus máscaras y todas las tramas que el nodo Blue&Me intercambia con el coche. Recibidas: la consulta de estado y la pregunta PROXI del Body Computer, y la petición multimedia de la radio. Enviadas: el estado, la respuesta PROXI, el watchdog, el tiempo de pista, el canal de audio y el texto de la pista.

Comparé el perfil con mis grabaciones antes de permitir ninguna transmisión. Los comandos siguientes muestran el perfil y decodifican las capturas. Esa comparación hay que repetirla con el coche en el que se hace el montaje:

blueandme-protocol-map --profile giulietta940
blueandme-decode ~/captures/A-ignition-on.log --summary
blueandme-decode ~/captures/C-buttons.log --summary

Las grabaciones deben contener la consulta de estado 0E094000, la petición PROXI 1E114000 y la trama del volante 06354000. Los bits del volante también deben coincidir con los botones pulsados en la captura C. Si falla alguna comprobación, el coche difiere del mío: aquí hay que parar, con la transmisión todavía desactivada.

Condición para seguir

Las capturas muestran las tramas que nombra el perfil, y blueandme-giulietta --check pasa.

Lo rápido que contesta la Pi. Reproduciendo el tráfico de mi coche hacia la aplicación en un bus virtual (experiments/node4021/app_replay.sh): PROXI contestado en 3.3 ms, la petición de la radio en 3.1 ms (su ventana es de unos 100 ms), y las 62 consultas de estado con una mediana de 3.5 ms. La aplicación solo lee las tramas del perfil; el resto lo filtra el kernel, o la Zero W contesta a la radio demasiado tarde.

Paso 12 — Primera transmisión, una trama cada vez

Anotar cada paso

Si pasa algo inesperado — testigos de aviso, un módulo que se cae, la radio haciendo cosas raras — vuelvo de inmediato a solo escucha y apunto lo que he visto.

Dos comprobaciones antes de transmitir. El módulo original debe estar desconectado: dos nodos con la misma dirección entran en conflicto. El valor PROXI del paso 10 debe estar en /etc/blueandme/config.yaml, bajo can:, escrito como 12 dígitos hexadecimales entre comillas. Si está vacío, la Pi no responde a PROXI. En mi Pi el valor va incluido en la copia que ejecuta. Este ajuste solo existe en el código publicado: lo cubren las pruebas, pero todavía no lo he probado en el coche.

can:
  proxi_value: "............"    # your car's six bytes, 12 hex digits, in quotes
blueandme-giulietta --config /etc/blueandme/config.yaml --check

Después, un solo comando saca el controlador del modo solo escucha y deja que la aplicación envíe las tramas que se le indiquen, las seis si no se dice nada; off deshace las dos cosas:

sudo ~/giulietta-blue-me/tx.sh on                        # all six node frames
sudo ~/giulietta-blue-me/tx.sh on bm_status_response     # or one at a time
sudo ~/giulietta-blue-me/tx.sh status
journalctl -fu blueandme-giulietta             # every transmitted frame is logged
sudo ~/giulietta-blue-me/tx.sh off                       # back to listen-only

Mi coche aceptó las seis tramas, así que uso on con todas activadas. Si el coche se comporta de forma inesperada, se pueden probar por separado en este orden:

#TramaPregunta que responde
1bm_status_response¿Deja el Body Computer de tratar el nodo como ausente?
2bm_proxi_response¿Deja de parpadear el cuentakilómetros?
3bm_watchdog¿Algún cambio?
4bm_audio_channel¿Ofrece ahora la radio la fuente Blue&Me, y la acepta?
5bm_track_time, bm_text_message¿Aparece texto en las pantallas?

En el punto 2 ya tenía un sustituto que el coche aceptaba. El punto 4 abrió la entrada de audio de la radio. Solo entonces tenía sentido conectar la tarjeta de sonido al coche.

Cómo se ponen de acuerdo la radio y la Pi sobre la fuente. La radio pregunta con 06314005#0C…, la Pi contesta 06314021#…84 en 3–5 ms, la trama de pantalla 0A114005 pasa a E2 y la radio confirma con 04…10. Salir es 24, y se contesta …80. La Pi solo contesta cuando le preguntan: un …84 enviado sin que nadie lo pidiera fue ignorado. A veces la radio se salta su 0C; basta con pulsar MEDIA otra vez.

El script que usé en las primeras pruebas. Antes de integrar la aplicación transmití con experiments/node4021/node4021_full.py, ejecutado a mano. Sigue disponible para las pruebas que la aplicación no incluye. Lo copié, junto con car_tx.sh, al directorio personal de la Pi. Durante la prueba, car_tx.sh permite transmitir a can0; al terminar restaura el modo anterior. Si no hay tráfico en el bus, no arranca. Se ejecuta así: sudo ~/car_tx.sh 1800 --value <your PROXI value> --text.

En el coche, transmitir es el estado normal

Desde que el coche espera el módulo, la Pi se queda en tx.sh on, también tras reinicios y reinstalaciones: sin su respuesta PROXI el cuentakilómetros parpadea. El modo solo escucha (tx.sh off) solo hace falta con los cables CAN recién conectados, hasta que ip -s -d link show can0 muestre tramas llegando y ningún error. preflight.sh comprueba que el controlador y la aplicación están de acuerdo, y tanto él como car_tx.sh devuelven el modo que encontraron (car_tx.sh para la aplicación mientras dura su prueba si es ella la que transmite, y la arranca otra vez después). tx.sh status enseña el controlador y la aplicación.

Parada de emergencia

sudo ~/giulietta-blue-me/tx.sh off
# or, if that script is not there:
sudo sed -i 's/^  mode:.*/  mode: listen-only/' /etc/blueandme/config.yaml
sudo systemctl restart blueandme-giulietta

Físicamente: se desconectan CAN-H y CAN-L.

05 Audio e instalación permanente pasos 13–15

Paso 13 — Tarjeta de sonido banco

Fui preparando el audio en casa mientras avanzaba con el CAN. La Pi Zero W no tiene entrada ni salida de audio analógico. La radio recibe el sonido por los pines 5 / 22 / 21 del conector Blue&Me, y el micrófono llega por los pines 8 / 24. Usé una tarjeta de sonido USB para ambos. El audio no puede pasar por CAN: B-CAN trabaja a 50 kbit/s, frente a los 1.4 Mbit/s que necesita el sonido estéreo con calidad de CD.

La tarjeta es un adaptador Ugreen USB-A basado en un C-Media HS-100B. Se enchufa al puerto micro-USB de datos de la Zero W, el marcado USB y no PWR, con un adaptador OTG.

  • Tarjeta de sonido USB Ugreen C-Media HS-100B
  • Adaptador micro-USB OTG micro-B macho a USB-A hembra
  • Auriculares para la prueba de salida
  • Unos auriculares con micrófono para la prueba de grabación
  • Multímetro para comprobar el contacto exterior del jack
HS-100B
USB ID0d8c:0014 (C-Media), USB 1.1 a velocidad completa, 100 mA
Nombre ALSADevice, es decir, plughw:CARD=Device
Salidaestéreo, salida de auriculares. Volumen Speaker de −37 a 0 dB
Entradaentrada de micrófono mono. Mic Capture de −12 a +23 dB; Auto Gain Control viene activado; install.sh lo apaga, porque las llamadas necesitan una ganancia de micrófono fija
Frecuencias de muestreoSolo 48 y 44.1 kHz. Las llamadas llegan a 8 o 16 kHz, así que la Pi las remuestrea

Mic Playback tiene que quedarse apagado. Devuelve la entrada del micrófono directamente a la salida. Viene apagado, pero en el coche mandaría el micrófono del habitáculo a la radio. blueandme-status avisa si está encendido.

El contacto exterior del jack de la salida de auriculares es una masa de verdad. El HS-100B puede trabajar con una salida "sin condensadores", en la que el contacto exterior del jack queda a una tensión de polarización en vez de a masa. Esta tarjeta no: alimentada, el contacto exterior del jack marca 0 V respecto a la carcasa metálica de su conector USB. Hay que volver a comprobarlo si algún día se cambia de tarjeta, porque un contacto exterior del jack polarizado nunca debe tocar el pin 21.

La entrada de micrófono lleva unos 3 V de polarización, en circuito abierto, pensados para micrófonos electret sencillos. Es demasiado poco para el micrófono amplificado del coche, que nunca debe conectarse directamente a ella.

  1. Primero en un PC

    lsusb lista la tarjeta con el identificador de fabricante 0d8c. Luego medí el contacto exterior del jack de auriculares respecto a la carcasa del conector USB: 0 V.

  2. En la Pi: encontrar la tarjeta

    La enchufé con el adaptador OTG. Tanto aplay -l como arecord -l tienen que listarla, como card N: Device [USB Audio Device].

  3. Reproducir y grabar

    Mandé un tono a los auriculares, luego grabé cinco segundos con su micrófono y los escuché.

speaker-test -D plughw:CARD=Device -c 2 -t sine -f 440 -l 1
arecord -D plughw:CARD=Device -f S16_LE -r 48000 -c 1 -d 5 /tmp/mic.wav
aplay -D plughw:CARD=Device /tmp/mic.wav

install.sh pone la tarjeta como dispositivo de sonido por defecto de la Pi, por su nombre Device. Y deja el Bluetooth configurado para música y para llamadas:

ServicioQué hace
bluealsareceptor de música y el lado manos libres de las llamadas (-p a2dp-sink -p hfp-hf), en bluez-alsa 4.3.1 compilado con mSBC para llamadas de banda ancha
bluealsa-aplayreproduce la música en la tarjeta
blueandme-sco-routeen el arranque, le dice al chip Bluetooth de la Zero W que lleve el audio de llamada por HCI; sin él, las llamadas quedan en silencio
blueandme-sco-aplayreproduce a quien llama en la tarjeta, con un búfer de 150 ms
blueandme-sco-uplinkenvía el micrófono de la tarjeta al móvil. Mantiene abierto el canal de llamada mientras el móvil esté conectado, y nunca deja que el audio viejo del micrófono se acumule y se convierta en retardo
blueandme-bt-reconnectintenta conectar con el móvil emparejado después del arranque. Mi teléfono solo se reconectaba por su cuenta al encender su propio Bluetooth; si la Pi arrancaba después, tenía que iniciar ella la conexión

Las llamadas son de banda ancha. El bluez-alsa de Debian (4.0) solo lleva las llamadas a 8 kHz. install.sh pone en /usr/local un bluez-alsa 4.3.1 compilado con mSBC, sacado del paquete ya compilado de packages/ o compilándolo, y con dpkg-divert lo coloca en lugar de los archivos de Debian. El móvil elige entonces mSBC, 16 kHz, en el propio chip Bluetooth de la Zero W: en el banco se oyeron palabras dichas en voz baja que a 8 kHz se perdían, y los pocos paquetes dañados (unos tres en 75 s) quedaron disimulados. sudo ./install.sh --no-wideband devuelve los archivos de Debian.

El móvil se empareja una vez. Mientras la aplicación está en solo escucha nadie contesta a las peticiones de emparejamiento, así que blueandme-pair abre el emparejamiento un rato, confía en el móvil que se empareja y lo vuelve a cerrar. Emparejé después de haber lanzado install.sh, para que el móvil viera el perfil manos libres; un móvil emparejado antes solo muestra "Media audio" y hay que olvidarlo y emparejarlo otra vez.

sudo blueandme-pair --seconds 120
# on the phone: pair with "blueandme", then check Phone calls and Media audio are on

Probé primero la música y después una llamada, con auriculares en la tarjeta y un micrófono en su entrada. Las dos direcciones tienen que funcionar antes de llevar el cableado de audio al coche. Durante una llamada, journalctl -u blueandme-sco-uplink muestra cuánto audio de micrófono se ha enviado.

La Pi controla las llamadas con comandos AT por la conexión manos libres: blueandme-call answer para contestar, blueandme-call hangup para colgar y blueandme-call calls para listarlas. Cada comando muestra la respuesta del móvil y se considera correcto si recibe OK. Tras reiniciar, blueandme-bt-reconnect vuelve a conectarlo automáticamente.

Tiempos del audio de llamadas

El servicio que envía la voz al teléfono descarta el audio que lleva más de 120 ms esperando. Cuando probé arecord | aplay, se acumulaban cuatro segundos de audio entre llamadas. También separé los reproductores de música y llamadas: con uno solo, la música no volvía al colgar. Consultar Bluetooth cada tres segundos y dar más prioridad al servicio del micrófono evitó sobrecargar el único núcleo.

El volante

La aplicación instalada convierte los botones del volante en acciones del móvil, tal como las describe el manual del Blue&Me del Giulietta (604_38_194, p. 9): la acción llega al soltar el botón, y una pulsación mantenida más de un segundo es una pulsación larga. En cada pulsación le pregunta al móvil qué llamadas hay (AT+CLCC), así que nunca se descoordina. No envía nada por CAN, de modo que también funciona en solo escucha. En el banco, con los botones inyectados por el loopback del controlador (sudo ~/press.sh phone 1.5), todo esto funcionó con un móvil de verdad y una llamada de verdad (2026-09-26). Después, en el coche y con los botones reales del volante, he comprobado responder una llamada normal, colgar, rechazar una llamada, silenciar el micrófono, pasar una llamada al móvil y de vuelta, y el asistente a través del micrófono del techo.

BotónQué hace
☎ teléfonoPulsar: contesta una llamada que está sonando, o coge la que está en espera. Mantener: rechaza una llamada que está sonando (quien llama oye que comunica), o cuelga.
silencio / ESCEn una llamada, silencia y reactiva el micrófono. Fuera de las llamadas, pausa y reanuda la música. También cierra el asistente.
voz ("Windows")Abre el asistente del propio móvil (AT+BVRA=1), que me oye por el micrófono del coche y contesta por los altavoces. El móvil cierra la sesión él solo cuando ha contestado; su página se queda en la pantalla del móvil.
▲ ▼Pista siguiente y anterior. En mi teléfono, la primera pulsación de Anterior vuelve al principio de la canción.
SRC / OKEn una llamada, la pasa al auricular del móvil y la trae de vuelta. Fuera de las llamadas, la radio lo usa para cambiar de fuente.
+ / −Nada en la Pi: la radio ajusta su propio volumen.

Pasar una llamada al móvil se hace en el enlace de radio: la Pi corta el enlace de audio de la llamada (hcitool, HCI Disconnect) y el móvil se lleva la llamada a su auricular. Para traerla de vuelta está AT+BCC, que le pide al móvil que vuelva a montar el enlace. Con bluez-alsa 4.3.1 no basta con parar los reproductores: el enlace sigue en pie y la llamada se queda muda en los dos lados.

Condición para seguir

La tarjeta aparece listada para reproducción y captura, el contacto exterior del jack marca 0 V, y tanto el tono como la voz grabada se oyen por los auriculares. Después, con el móvil emparejado, suena la música, y una llamada se queda en el Bluetooth, con los dos lados oyéndose y sin retardo apreciable.

Paso 14 — Conectar el audio y el micrófono al coche

La salida de auriculares de la tarjeta va a los pines de audio del conector del Blue&Me.

SeñalPin del Blue&Me
Izquierdo5
Derecho22
Masa de audio21

El contacto exterior del jack es una masa de verdad (paso 13), así que el conector se cablea tal cual: la punta es el izquierdo, al pin 5; el anillo es el derecho, al pin 22; el contacto exterior del jack, al pin 21.

Empecé con el volumen de la tarjeta bajo, seleccioné Blue&Me y comparé de oído su nivel con FM. El ajuste se hace en la Pi con el control de volumen de la tarjeta. Después toca comprobar si hay ruido del alternador con el motor en marcha. Si lo hay, un transformador de aislamiento de audio 1:1 entre la tarjeta y el coche rompe el bucle de masa.

El micrófono. Los pines 8 (MIC+) y 24 (MIC−) llevan el micrófono de la consola del techo, que es amplificado. Necesita su propia alimentación de 5–8 V por el cable de señal, y un divisor antes de la entrada de la tarjeta, porque la tarjeta no puede alimentarlo y su señal está cerca del nivel de línea. El circuito de abajo hace las dos cosas. En otros coches del grupo la cápsula es un Telicom MIC-98, que según su hoja de datos trabaja con 5–8 V a través de 680 Ω; nadie ha confirmado que el 940 lleve el mismo, así que el circuito está pensado para medirlo antes de fiarse. Durante una llamada la aplicación también le dice a la radio por CAN que hay una llamada en curso, con el valor que usa el módulo del Doblò.

La placa de prueba del micrófono

Monté primero el circuito en una protoboard. Alimenta el micrófono del techo como hacía el módulo original, pero con menos corriente. El condensador bloquea la tensión continua y las dos resistencias reducen la señal unas doce veces antes de la entrada de micrófono de la tarjeta. Con este circuito grabé, medí el nivel, escuché la grabación e hice una llamada. El circuito de encendido con el contacto del paso 15 está en las filas 20–27 de la misma protoboard.

−abcde1234567891011121314151617puente → pin 2 de la Pi (5 V) · solo en el coche2 kΩ ‖ 1 kΩ1 kΩ en b: unos 670 Ω+10 µFpata larga (+) arriba10 kΩ1 kΩcable → pin 8 del cochecable de micrófono · puntaconector en la entrada MIC de la tarjetacable de micrófono · manguitocable → pin 24 del cochepuente → pin 6 de la Pi (GND)cable → pin 15 (masa CAN) · solo coche
Los agujeros a–e de cada fila están unidos; las filas no están unidas entre sí; la tira − es una sola conexión larga. Turquesa: señal; gris: masa; discontinuo: solo en el coche. El pin 6 de la Pi en la tira es la masa de la Pi, que llega al coche por el cable del pin 15.
PiezaDóndeComprobación
2 kΩde 1c a 5cmultímetro en Ω, con la resistencia sobre la mesa (los dedos en las dos patas dan una lectura baja): unos 2.0 k
1 kΩde 1b a 5b, junto a la de 2 kΩunos 1.0 k; con las dos puestas, de la fila 1 a la fila 5 se leen unos 670 Ω. Añadida en el coche (2026-09-27): el micrófono se quedó entonces en 2.37 V en vez de 2.16 V
10 µF+ en 5d, − en 8dla pata larga es +, la franja marca el −; de 10 V o más
10 kΩde 8c a 12cunos 10 k
1 kΩde 12d a la tira −unos 1.0 k
Cable de micrófonopunta en 12e, contacto exterior del jack en la tira −un cable viejo de 3.5 mm, cortado; su hilo central encintado, sin conectar; conector en la entrada MIC de la tarjeta
Cables del coche5e (pin 8), tira − (pines 24 y 15)cables puente dupont
Puente de masade la tira − al pin 6 de la Pise queda puesto
Puente de 5 Vde 1a al pin 2 de la Pisolo en el coche: el pin 2 está en la fila exterior, primer pin desde el extremo de la microSD

Prueba en casa, el 2026-09-27. Retiré el puente de 5 V, conecté la punta del cable de audio a la fila 5 y su contacto de masa a la tira −. Reproduje un tono de 200 Hz desde la tarjeta: medí 520 mV en la fila 5 y 41.6 mV en la fila 12. La señal se reducía doce veces y media. La grabación salió limpia: −37.5 dBFS con 0 dB de ganancia, sin recorte. Con esa ganancia la entrada admite unos 2 V antes de saturar, así que empecé la prueba en el coche con la ganancia máxima. Si la voz hubiera quedado baja, una resistencia mayor en lugar de la de 1 kΩ habría reducido la atenuación.

Medidas de mi coche

MedidaValor
Del pin 8 al pin 24, con el módulo fuera6.5 kΩ en ambos sentidos, abierto respecto al chasis
Alimentado desde 5 V a través de 2 kΩ2.16 V, 1.4 mA
Alimentado a través de 2 kΩ ‖ 1 kΩ (670 Ω, el que se quedó)2.37 V, 4.0 mA
Divisor, 10 kΩ sobre 1 kΩ÷ 12.5 (520 mV de entrada, 41.6 mV de salida)
Silencio, ganancia de micrófono de la tarjeta a +23 dB−60 dBFS
Habla normalde −41 a −55 dBFS, picos de unos −25
Silbido fuertepicos de −0.8 dBFS, sin recorte

Grabé mi voz y unos silbidos para probar el micrófono del techo; después hice una llamada. Configuré el servicio del micrófono para añadir 15 dB antes de enviar la voz al móvil (--gain-db 15 en /etc/blueandme/sco-uplink.env). La otra persona me dijo que se oía muy bien. Esa prueba completaba lo que me habían indicado las medidas.

En el coche, por orden

Reuní las pruebas de audio y alimentación para la visita al coche: el paso 14 y la parte del paso 15 que se hace allí. El orden siguiente mantiene la Pi en la batería externa hasta conectar el convertidor, al final.

En casa, antes de salir

  1. Saqué de la protoboard los hilos del cable de audio (la punta de su fila, el contacto exterior del jack de la tira −): a partir de ahí ese cable va a los pines de audio 5, 22, 21 del coche.
  2. Saqué de la fila 26 el puente provisional de 5 V (era para la prueba en banco del encendido con el contacto).
  3. Para el viaje quedaron sin conectar el puente de 5 V del micrófono (fila 1) y los cuatro cables del coche (pines 8, 24, 15, 32). El cable del pin 5 de la Pi y la masa del pin 6 de la Pi se quedaron puestos.
  4. Buck: soldé un cable rojo a IN+ y uno negro a IN−, puse tubo termorretráctil sobre los pads y pines dupont en los extremos.
  5. Lo que llevé: la Pi con el MCP2515 y la tarjeta de sonido, la protoboard, el power bank, el buck con un cable USB para el puerto PWR de la Pi, el cable de audio, cables dupont, una resistencia de 1 kΩ de repuesto, multímetro, móvil, tablet y un extractor de fusibles.
  6. sudo ~/giulietta-blue-me/preflight.sh termina en PREFLIGHT PASS, y después sudo ~/giulietta-blue-me/tx.sh off: la Pi se queda en solo escucha mientras se ponen los cables CAN. Hay que poder llegar a la Pi estando en el coche; yo usé el punto de acceso del móvil.

En el coche, primero medir (Pi con el power bank)

  1. Módulo Blue&Me desenchufado, y can0 todavía en solo escucha desde casa (tx.sh status) mientras se ponen los cables CAN.
  2. Voltios en continua, sonda negra sobre metal sin pintar: pin 16 unos 12 V con la llave quitada y también en MAR (permanente); pin 32 0 V con la llave quitada, unos 12 V en MAR (contacto).
  3. Al quitar el F36 (la caja de fusibles de abajo), el pin 16 tiene que caer a 0 V. Luego se vuelve a poner.
  4. CAN: 30 a H, 14 a L, y el cable de la tira − al pin 15.
  5. Cuando ip -s -d link show can0 mostró tramas llegando y ningún error: tx.sh on. A partir de ahí es la Pi la que contesta al coche. Quité el contacto y lo volví a poner: el cuentakilómetros no parpadeó.

Después, el micrófono

  1. Solo multímetro, con la protoboard todavía sin conectar a los pines 8 y 24: Ω del pin 8 al 24, en los dos sentidos; y del pin 8 y del pin 24 a metal sin pintar (OL).
  2. Puse los cables de la protoboard en los pines 8 y 24, el puente de la fila 1 en el pin 2 de la Pi y el conector del micrófono en la entrada MIC de la tarjeta.
  3. Con el multímetro en tensión continua, puse la punta negra en la tira − y la roja en la fila 5. Una lectura claramente inferior a 5 V indica que el micrófono consume corriente; en torno a 3–4 V es una buena referencia inicial. Una lectura por debajo de unos 2.5 V, o distorsión al silbar fuerte, puede indicar que la resistencia de 2 kΩ limita demasiado la corriente. Se puede cambiar por una de 1 kΩ o añadir una de 1 kΩ en paralelo, entre las filas 1 y 5. Yo hice lo segundo: unos 670 Ω, cerca de los 680 Ω de la ficha técnica.
  4. Grabé en la Pi mientras silbaba y hablaba hacia la consola del techo, y lo escuché. Como sonaba limpio, hice una llamada de prueba con el micrófono del coche.

Después, el audio y la aplicación

  1. Conecté el cable de audio a los pines 5 (punta), 22 (anillo) y 21 (contacto exterior), y la clavija a la salida de auriculares. Al seleccionar Blue&Me, el móvil reproduce música si la aplicación se ha usado recientemente, y la radio muestra la pista. Ajusté el volumen y comprobé si había ruido con el motor en marcha. Con la Pi aún alimentada por la batería externa, había que repetir la comprobación al pasar a la alimentación definitiva.
  2. El volante: saltar pista, pausa, el asistente, contestar y rechazar una llamada.

Después, el contacto (paso 15)

  1. Contacto quitado. Puse el cable de la fila 26 en el pin 32.
  2. Configuré la Pi para que lea el contacto en GPIO3. Mientras la llave va a MAR y vuelve, esa entrada tiene que verse baja en MAR y alta con el contacto quitado.

Por último, el buck (paso 15)

Los 12 V solo van, siempre, al IN+ del buck

Nunca a la protoboard ni a un pin de la Pi. Antes de tocar el pin 16 quito el F36.

  1. Llave fuera. Quité el F36.
  2. El IN+ del buck (rojo), al pin 16; el IN− del buck (negro), a un agujero libre de la tira −, que llega al pin 15 por su cable (unos 0.1 A; en la instalación permanente el buck tiene su propio cable de masa).
  3. Apagué la Pi (halt). Cuando se apagó su LED, pasé el cable PWR de la Pi del power bank a la toma USB del buck.
  4. Volví a poner el F36: la Pi arrancó desde el coche. Hay que medir la tensión de alimentación en la Pi, porque la Zero W no tiene detector de subtensión.
  5. Arranqué el motor: la Pi tenía que seguir funcionando. La mía se reinició hasta que cambié el convertidor; el diodo, el condensador y los resultados de las pruebas están en el paso 15.
  6. Al dejarlo hay dos opciones: o se queda, funcionando desde el coche con tx.sh on, o se viene a casa conmigo. En ese caso la apago (halt) y luego quito el F36 antes de desenchufar nada.
El fusible del Blue&Me, el F36: abajo del todo en la columna derecha de esta caja de fusibles (esquema del manual del propietario). Al quitarlo se cortan los 12 V permanentes de la Pi en el pin 16; conviene comprobarlo una vez con el multímetro.
Condición para seguir

La música debe oírse por los altavoces del coche con volumen suficiente y sin ruido del alternador.

Mandos y pantalla de la radio

Ajusté de oído el control Speaker para igualar el volumen de FM. A −20 dB la música se quedaba corta; terminé en 0 dB, el máximo de la tarjeta, y lo guardé con alsactl store. Después escuché con el motor en marcha. No había ruido, así que no necesité un aislador de bucle de masa. Esa primera comprobación fue con la batería externa. Con la unidad alimentada por el coche y el motor en marcha tampoco hay ruido.

La radio gestiona algunos botones por su cuenta. Fuera de una llamada comunica por CAN si está silenciada, y la Pi pausa el teléfono hasta que vuelve el sonido. También leí los botones de flecha en esos mensajes. Izquierda y derecha cambian de pista; arriba y abajo ajustan el volumen Bluetooth.

El texto de la pista usa el formato del módulo del Doblò, con su juego de caracteres de 6 bits, tal como está descifrado en fiatcan, y la radio del Giulietta lo acepta. La línea de arriba muestra los primeros doce caracteres de un campo de texto, así que la Pi va pasando por él "artista - título" cada cuarto de segundo. La línea de abajo muestra otro campo, que lleva el tiempo como M:SS. Cuatro códigos de ese juego no muestran nada en esta radio y ninguno es un paréntesis, así que los paréntesis de un título se convierten en *.

Comportamientos que dependen del teléfono. La primera pulsación de Anterior reinicia la canción actual. Si la aplicación de música lleva tiempo sin usarse, el teléfono ignora Reproducir hasta que la abro. YouTube Music no responde a los comandos de avance o retroceso rápido. Una llamada de WhatsApp no se puede responder por ahora desde el volante: el botón de teléfono responde una llamada normal, pero mi móvil presenta la llamada de WhatsApp entrante en un estado que la aplicación no trata como llamada entrante.

Paso 15 — Instalación permanente

Después de comprobar el audio en el paso 14, conecté la alimentación permanente. La Pi recibe los 12 V permanentes del coche a través del fusible F36. Permanece en espera hasta 72 horas, lista para responder al PROXI cuando despierta el coche. Después se apaga. Fui añadiendo piezas cuando las pruebas mostraban que hacían falta.

Por qué dejo la Pi encendida al aparcar

El coche pregunta por PROXI más o menos un segundo después de despertar, que es cuando se abre, antes de girar la llave. Pregunta tres veces en pocos segundos. Una Pi que tiene que arrancar en ese momento llega tardísimo: en un inicio en frío el 2026-09-27 el firmware tardó unos 3.8 s, el kernel 5.6 s, y la aplicación estuvo en el bus unos 53 s después de darle corriente.

Una Pi que ya está en marcha contesta al instante: 3.3 ms reproduciendo en el banco el tráfico del coche (paso 11), 8 ms con el script supervisado de la captura ZB. En todas las pruebas hasta ahora la Pi estaba en marcha cuando despertó el coche, así que PROXI siempre tuvo respuesta y el cuentakilómetros nunca parpadeó. Lo que hace el coche cuando una Pi arranca después de que él haya despertado, como pasaría tras un aparcamiento más largo que la espera, no lo he probado.

Inicio en frío frente a la comprobación PROXI del coche, medido en esta Piel coche pide PROXI, tres veces← una Pi en marcha responde en 3 msPi en frío: firmware 3.8 s, luego kernel 5.6 ssu aplicación en el bus a ~53 s, fuera de escala →0 sse da corriente10 s20 s30 s40 sInicio en frío 2026-09-27: systemd-analyze y el registro del sistema; tiempo de firmware del registro de consumo.
Cuando el coche termina de comprobar sus módulos, el kernel todavía no ha arrancado. fmntf responde a PROXI desde initramfs, antes de /sbin/init. Eso requiere un kernel que arranque en unos dos segundos; en mi instalación tarda cinco y medio. Por eso mantengo la Pi en espera.

El consumo que medí en espera

Medido en el banco con un medidor de potencia USB en la entrada de 5 V de la Pi (experiments/standby/). El reposo apaga Bluetooth y Wi-Fi, pone la CPU a su velocidad más baja y apaga el LED; la interfaz CAN sigue activa, en el modo que dejó tx.sh, para enterarse de que el coche despierta (en el coche: transmitiendo, para que PROXI tenga respuesta al instante).

EstadoEn la PiDe la batería
Funcionando: teléfono conectado, música o una llamada1.0–1.07 Wmotor en marcha
Aparcado, en reposo0.63 Wunos 65 mA, 1.6 Ah al día
72 horas de reposounos 4.7 Ah, alrededor del 7 % de una batería de 70 Ah
Apagada, tras la espera0.22 Wunos 25 mA, 0.6 Ah al día, hasta que se quita y se vuelve a poner el F36 (o hasta el encendido con el contacto, si está montado)

Para el cálculo supuse 12.4 V y un convertidor buck con un 80 % de eficiencia. La capacidad real de la batería debe comprobarse en la etiqueta. Apagada, la Pi sigue consumiendo aproximadamente un tercio de la corriente de funcionamiento. Tres semanas aparcada suponen unos 4.7 + 11 Ah, alrededor del 22 %. Para una ausencia más larga, retiro F36 y desconecto la alimentación.

Blue&Me no está disponible con la Pi apagada. La radio no puede usar esa fuente y el PROXI queda sin respuesta. Retirar y volver a colocar F36 reinicia la Pi, que está lista en aproximadamente un minuto. Si son frecuentes las paradas largas, se puede añadir el circuito de arranque por contacto de abajo; entonces basta con dar el contacto.

Salir de la espera. blueandme-standby entra en espera tras un minuto sin tráfico con el contacto apagado. Despierta con un mensaje CAN al desbloquear el coche, o por la línea de contacto si está conectada. En mi prueba de banco con un mensaje, la música estuvo lista en 3.3 s y las llamadas en 3.7 s. Un arranque en frío tarda 33.5 y 34.2 s. El servicio solo se activa tras ver tráfico del coche; en un banco con el bus siempre silencioso no entra en espera.

La instalación

AsuntoCómo
AlimentaciónBuck de 12 V→5 V, de grado automoción y con poco consumo en vacío, alimentado desde el pin 16 del Blue&Me (12 V permanentes) y el pin 15 (masa), siempre encendido. Al acabar la espera la Pi se apaga (unos 25 mA de la batería) hasta que se quita y se vuelve a poner el F36 o, si está montado el encendido con el contacto, hasta que se pone el contacto. El módulo USB original de 6–32 V lo cambié, tras una prueba de caída de tensión sin carga, por un módulo reductor USB TECNOIOT de 6–24 V a 5 V; con el nuevo se acabaron los reinicios al arrancar el motor (2026-10-01). El convertidor va montado dentro de la caja, a pocos centímetros del conector, para que el propio fusible del coche para la alimentación del Blue&Me cubra el cable corto igual que cubría el cableado del módulo original; un fusible en línea de 2 A solo si algún día los cables salen de la caja. En el banco, con un adaptador de 12 V, mantuvo la Pi a 4.90–4.92 V desde el arranque hasta la música (0.12–0.32 A), con un consumo en vacío despreciable (convertidor original, 2026-09-25); esa prueba a 12 V no demostraba que funcionara con tensión de entrada baja. Para ausencias largas corto la corriente quitando el fusible del coche, el F36. Nunca deben llegar 12 V a un pin GPIO.
PROXILa contesta la Pi en marcha, porque está en reposo y no apagada (3.3 ms en el banco). Tras un aparcamiento más largo que la espera, la Pi está apagada hasta que se reinicia; lo que hace el coche con una respuesta tardía no lo he probado.
MicrófonoSoldé el circuito de micrófono del paso 14 con los valores que había medido en el coche. Adapta el micrófono a la entrada de la tarjeta de sonido.
Detección de contactoEl tráfico CAN despierta a una Pi en reposo sin necesidad de ningún cable. El contacto solo lo necesita una Pi apagada, tras un aparcamiento más largo que la espera: se añade solo si esos aparcamientos resultan ser habituales; hasta entonces basta con quitar el fusible y volver a ponerlo. El circuito es un transistor NPN y dos resistencias (un PN2222 de un kit de iniciación): pin 32 → 100 kΩ → base, 100 kΩ de base a masa, colector a GPIO3 (pin 5 de la cabecera), emisor a masa; un 1N4007 entre base y emisor (cátodo a la base) mantiene los picos negativos lejos de la base (power.ignition_gpio: 3, ignition_active_low: true). GPIO3 es el único pin que arranca una Pi apagada cuando se lleva a nivel bajo, y tiene su propia resistencia pull-up de 1.8 kΩ. No puse optoacoplador: la masa de la Pi es de todos modos la masa del coche.

Todavía no he hecho que el sistema de archivos raíz sea de solo lectura. La tarjeta ha sobrevivido a los cortes hasta ahora, pero eso no demuestra que esté a salvo de daños.

El encendido con el contacto

Opcional: permite que el contacto reinicie una Pi que se ha apagado tras un aparcamiento de más de 72 horas; sin él, se quita el F36 y se vuelve a poner. Son tres piezas del kit en las filas 20–27 de la protoboard del micrófono, y comparten su tira −. Con la llave en MAR, el transistor lleva el pin 5 de la Pi (GPIO3) a masa, y una Pi apagada arranca con eso.

−abcde20212223242526271N4007100 kΩEBCPN2222100 kΩcable → pin 5 de la Pi (GPIO3)llevado a masa mientras la llave está en MARcable → pin 32 del coche (contacto)12 V en MAR: nunca a un pin de la Pi
Ámbar: 12 V del coche, nunca a un pin de la Pi; turquesa: hacia la Pi; gris: masa. En una protoboard larga hay que comprobar que la tira − no tenga un corte (una interrupción en la línea azul) antes de la fila 27.
PiezaDóndeComprobación
PN2222E en 21c, B en 22c, C en 23cmultímetro en diodo (→|): rojo en una pata, negro en cada una de las otras; la pata que marca unos 0.6–0.7 V hacia las dos es la base (la del medio en un PN2222). Con el rojo en la base, la pata que marca un poco más es el emisor. Con el negro en la base: las dos OL (un NPN).
1N4007franja en 22b, el otro extremo en 21bla franja va a la fila de la base
100 kΩde 22a a la tira −unos 100 k, medida fuera de la placa
100 kΩde 22d a 26dunos 100 k
Puentede 21a a la tira −la masa del emisor
Cablede 23e al pin 5 de la Pipin 5: la fila interior, tercer pin desde el extremo de la microSD
Cablede 26e al pin 32 del cochela línea de contacto, tal como se midió en el coche

Probado en banco el 2026-09-27. Los 5 V de la propia Pi (pin 2) en la fila 26, haciendo de contacto, pusieron GPIO3 a 0; sin ellos, 1. Una Pi apagada arrancó en el momento de enchufarlos (apagada a las 14:38:48, de vuelta en la red a las 14:39:56). Ese puente provisional lo quité después, porque si no la Pi se reinicia cada vez que se apaga. En el coche solo hacen falta el cable del pin 32 y dos líneas de configuración (ignition_gpio: 3, ignition_active_low: true).

De 12 V a 5 V

El convertidor no se conecta a la protoboard: tiene sus propios puntos de soldadura y salida USB. Así mantengo los 12 V separados de la protoboard y de los pines de la Pi.

DesdeHastaNota
Pin 16 del coche (12 V permanentes)IN+ del buckDespués del fusible F36. En el montaje definitivo pasa por el circuito de apoyo de alimentación: pin 16 → I10 de la placa; L10 de la placa → IN+ del buck
Masa del cocheIN− del buckla tira − para la prueba en el coche. De forma definitiva: pin 15 → K1 de la placa, L1 de la placa → IN− del buck
Toma USB del buckPuerto PWR de la Piun cable USB; el otro puerto de la Pi se queda con la tarjeta de sonido

Soldado, sin protoboard

Para la instalación permanente el circuito del micrófono va soldado, con cada unión cubierta de tubo termorretráctil, porque una protoboard se afloja con las vibraciones de un coche. El encendido con el contacto va en la placa perforada del apartado siguiente. Los valores, tal como se quedaron en el coche (2026-09-27): con una de 1 kΩ junto a la de 2 kΩ el micrófono se quedó en 2.37 V (2.16 V solo con la de 2 kΩ) y grabó limpio a ganancia máxima, silbidos fuertes incluidos.

2 kΩ1 kΩen paralelo: unos 670 Ωcable → pin 2 de la Pi (5 V)pin 8 coche+10 µF+ hacia A10 kΩpunta micro1 kΩpin 24 del coche · pin 15 del cochemanguito microMasa de la Pi (pin 6)ABG
El circuito del micrófono como tres uniones: A (la de 2 kΩ y la de 1 kΩ lado a lado, la pata + del condensador, el pin 8 del coche), B (10 kΩ, la de 1 kΩ de abajo, la punta del conector del micrófono), G (las masas). Azul: tubo termorretráctil sobre cada unión y cada pieza.
  1. Corté los cables a medida. Antes de soldar metí un trozo de tubo en cada cable que termina en A, B o G, y otro sobre cada pieza que iba a unir.
  2. La de 2 kΩ y una de 1 kΩ lado a lado, con las patas retorcidas juntas en los dos extremos (unos 670 Ω); un extremo al cable del pin 2 de la Pi.
  3. A: el otro extremo de la pareja, la pata + del condensador y el cable del pin 8 del coche, retorcidos y soldados. La pata − del condensador, a un extremo de la de 10 kΩ.
  4. B: el otro extremo de la de 10 kΩ, la segunda de 1 kΩ y el cable de la punta del conector del micrófono.
  5. G: el otro extremo de esa de 1 kΩ, los pines 24 y 15 del coche, el contacto exterior del jack del conector del micrófono y el cable de masa de la Pi.
  6. Deslicé cada tubo sobre su unión o su pieza y lo encogí (con pistola de aire caliente, o con un mechero sujeto por debajo, no dentro de la llama).
  7. Multímetro en Ω antes del coche: del cable del pin 2 de la Pi al cable del pin 8 del coche, unos 670 Ω; de la punta del micrófono a masa, alrededor de 1 k; del pin 8 del coche a masa, abierto.
Dos masas que hay que comprobar antes de cerrar la caja

Con la unidad ya montada en su caja, la persona a la que llamé oía un ruido grave, como de motor, y no mi voz. De vuelta en el banco (2026-10-11), el ruido de fondo de la entrada de micrófono era de −34 dBFS con +23 dB de ganancia y sin nada en el pin 8 del coche. En el coche, el 2026-09-27, con el micrófono del techo conectado y el habitáculo en silencio, había sido de unos −60. En el banco era el mismo con la batería externa y con el pin 8 del coche unido al pin 24, y desaparecía (−82) al sacar el conector del micrófono de la tarjeta. Así que entraba por el conector del micrófono, y las dos causas eran masas.

Había llevado el contacto exterior del jack del micrófono solo al pin 24 del coche y no a la unión G. Al unirlo, el ruido de fondo bajó a −40. Además, la masa de la tarjeta de sonido estaba por encima de la masa de la Pi, 60–80 mV con el conector del micrófono fuera y 30–38 mV con él puesto: unos 2 Ω en la masa de su cable USB, que había acortado y soldado a la Pi para que cupiera en la caja. Un cable corto soldado de la masa de la tarjeta a la unión G dejó esa diferencia en 4.5 mV con el conector del micrófono puesto y el ruido de fondo en −59 dBFS con el pin 8 unido al pin 24. Queda cerca de los −60 del 2026-09-27, pero no es la misma prueba: allí el micrófono estaba conectado, aquí no había micrófono y los dos pines estaban unidos.

Dos lecturas, con la alimentación conectada, encuentran las dos cosas. Con el conector del micrófono fuera: de la punta del conector al pin 24 del coche, alrededor de 1 kΩ. Con el conector puesto: milivoltios en continua entre el pin 21 del coche (la masa de la tarjeta, a través del cable de audio) y el pin 24 del coche, unos pocos milivoltios y estables. Decenas de milivoltios que oscilan son el propio ruido.

Desde los dos arreglos las llamadas vuelven a funcionar, y lo probé en el coche con la unidad ya instalada del todo (2026-10-11). La persona a la que llamo dice que oye un ligero eco. No lo he medido y me ocuparé de él más adelante.

Encendido con el contacto y apoyo de alimentación durante el arranque en una sola placa perforada

Los dos circuitos que tocan los 12 V del coche van en un solo trozo de la placa perforada del kit (agujeros metalizados, ninguno unido): 10 columnas × 24 filas, el tamaño de la placa de 3 × 7 cm (en otra placa hay que contar los agujeros). El encendido con el contacto ocupa las filas A–G; la fila H queda vacía; el apoyo de alimentación durante el arranque ocupa las filas I–X, casi todo para el condensador tumbado. Las piezas van arriba, y las conexiones se hacen por debajo con las patas dobladas y puentes de estaño. Con el condensador tumbado, la placa mide unos 21 mm de alto.

Apoyo de alimentación durante el arranque y arreglo del convertidor (2026-10-01). La Pi ya instalada se reiniciaba al arrancar el motor a pesar del condensador de 2200 µF que le había añadido. El convertidor original, anunciado para 6–32 V, daba 0 V con una fuente de banco a 10 V, incluso con la Pi desconectada y la fuente en modo de tensión constante. La salida volvía al llegar a 11 V; con la fuente a 12 V el multímetro midió 5.09 V de salida. Cambiar el convertidor acabó con los reinicios. El sustituto, un módulo reductor USB TECNOIOT de 6–24 V a 5 V, mantuvo la Pi en marcha con la fuente de banco bajada hasta 5 V; la tensión del raíl de la Pi con esa entrada no la apunté. Además, el IN− del buck apareció desconectado y lo volví a conectar antes de estas pruebas; necesita su propio retorno al pin 15. El pin 16 llega al buck a través de un diodo, con el condensador de 2200 µF montado en paralelo con IN+/IN− justo después. Hace falta un condensador de al menos 35 V; la franja del diodo mira hacia el condensador. Este arreglo no pide aumentar la capacidad. La forma de onda del arranque del coche sigue sin medirse; al calcular el tiempo de retención no hay que dar por bueno un límite de entrada anunciado de 6 V.

Piezas arriba; las uniones y pistas de colores se hacen por debajo12345678910ABCDEFGHIJKLMNOPQRSTUVWX→ pin 5 de la Pi (GPIO3)→ pin 32 del cochecontacto, 12 V en MAR→ pin 16 del coche12 V permanentes (F36)→ IN+ del buckmasa de la Pi ←pin 15 del coche ←IN− del buck ←100 kΩ100 kΩ1N4007 · franja F5diodo · franja J6PN2222planoEBC−−−−−2200 µF35 V−+tumbado sobre la placa,franja (−) hacia la columna 1;pegado o atado. Su extremopuede sobresalir algo.DESPERTAR CONTACTORETENCIÓN ARRANQUEcolor = unido por debajo:masabaseGPIO3pin 32 (12 V en MAR)pin 16 (12 V)punto = soldadura; banda = pista
Visto desde arriba. Cada punto de color es una unión, cada banda de color una pista que hay que hacer por debajo entre esos agujeros; los agujeros sin color quedan vacíos. Al darle la vuelta, la columna 1 queda a la derecha: hay que guiarse por los nombres de los agujeros. Gris: masa (la de la Pi en el lado del contacto, el pin 15 del coche en el lado del arranque, sin unir en la placa: así la corriente del buck no pasa por el cable de masa de la Pi); azul: base; turquesa: GPIO3; ámbar: pin 32; rojo: pin 16. Ninguno de los dos 12 V puede llegar a un pin de la Pi.
PiezaAgujerosComprobación
PN2222E en B3, B en B5, C en B7; cara plana hacia la fila CE, B, C localizados antes con el multímetro, como en la tabla de la protoboard de arriba
100 kΩde D1 a D5 (base a masa)unos 100 k, medida fuera de la placa
100 kΩde E5 a E9 (desde el pin 32)unos 100 k
1N4007de F1 a F5, franja en F5la franja va a la columna de la base
Diodode J10 a J6, franja en J61N5822 o 1N4007; la franja hacia el condensador
2200 µF 35 V+ en L6, − en L3; cuerpo tumbado sobre las filas M–Xla pata larga es +, la franja del cuerpo marca el −. Al revés puede reventar
CablesPin 5 de la Pi B9, masa de la Pi G1, pin 32 del coche G9; pin 16 del coche I10, pin 15 del coche K1, IN+ del buck L10, IN− del buck L1entran por arriba, soldados por debajo
PistasB3–B1–G1, B5–F5, B7–B9, E9–G9; I10–J10, J6–K6–L6–L10, K1–L1–L3por debajo; ningún otro agujero unido
  1. Empecé por el transistor. Abrí las patas E y C para encajarlas en B3, B5 y B7, con la cara plana hacia la fila C. Soldé por debajo sin unir los tres puntos de soldadura.
  2. Las dos resistencias y el 1N4007, tumbados sobre la placa, con la franja en F5; el diodo del arranque en J10–J6, con la franja en J6. Soldé, pero dejé las patas largas hasta tener hechas las pistas.
  3. Doblé las dos patas del condensador 90° a unos 3 mm del cuerpo: + en L6 y − en L3. Dejé el cuerpo horizontal hacia la fila X, soldé y lo fijé con pegamento. También se puede sujetar con una brida por dos agujeros libres.
  4. Las pistas de debajo: tumbé cada pata larga a lo largo de su pista y la soldé en los agujeros siguientes; el resto lo puenteé con estaño o con un recorte de hilo sin aislante. Contacto: B3–B1–G1, B5–F5, B7–B9, E9–G9. Arranque: I10–J10, J6–K6–L6–L10, K1–L1–L3. La fila H y todo lo demás quedan separados.
  5. Los siete cables entran por arriba, soldados por debajo.
  6. Multímetro en Ω, con nada conectado: de C a E, abierto en los dos sentidos; del cable del pin 5 de la Pi al cable de masa de la Pi, abierto; del cable del pin 32 del coche a B5, unos 100 k. Lado del arranque: del cable del pin 16 del coche al cable IN− del buck no debe marcar cerca de 0 (el condensador se carga con el multímetro, así que la lectura va subiendo); de IN+ a IN− del buck, lo mismo; en la escala de diodo, de I10 a L10 unos 0.3–0.7 V en un sentido y nada en el otro. Después, una gota de pegamento sobre las uniones de los cables.
  7. En el coche, con el F36 quitado, puse los cables y volví a poner el F36. Queda leer GPIO3 mientras la llave va a MAR y vuelve (0 en MAR, 1 con el contacto quitado), y ver que la Pi sigue en marcha durante un arranque del motor; la Zero W no tiene detector de tensión baja, así que get_throttled=0x0 no demuestra que la alimentación sea estable. Si se reinicia, hay que medir con un osciloscopio la entrada del buck y los 5 V de la Pi.
El arranque del motor es un problema distinto de quitar el contacto

El arranque del motor baja la alimentación incluso con la Pi funcionando en reposo. El buck original perdía la salida en el banco con unos 10 V de alimentación; cambiarlo acabó con los reinicios que he contado. He dejado montados el diodo y el condensador de 2200 µF, y me aseguré de que el IN− del buck va cableado al pin 15. Si vuelven los reinicios, capturaré la entrada del buck y los 5 V de la Pi durante el arranque. La Zero W no puede avisar de una subtensión mediante vcgencmd get_throttled: Raspberry Pi documenta la exclusión de la gama Zero.

La Zero W no tiene reloj de tiempo real. Hasta que NTP ajusta la hora, el started_at de cada grabación es la fecha de compilación de la imagen. El hotspot del teléfono permite corregir el reloj, pero las grabaciones anteriores conservan una fecha incorrecta. Un DS3231 de unos 2 € lo resolvería; todavía no lo he montado. Con el arranque por contacto necesita otro bus I2C (dtoverlay=i2c-gpio), porque ese circuito utiliza los pines 3 y 5.

  • Todavía no he completado la prueba de aparcamiento prolongado. Hay que comprobar la batería después de una noche y después de cuatro días. La Pi debe apagarse a las 72 horas; blueandme-standby debe registrar el apagado y Wi-Fi dejar de responder. Volver a colocar F36, o dar el contacto con el circuito de arranque instalado, debe reiniciarla. Que funcione a diario no demuestra que no descargue la batería durante una parada más larga.

Montaje de caja y conector

La caja original mide 150 × 175 × 40 mm y tiene cuatro soportes para tornillos M3. El plástico PP-TD40 deja pasar Bluetooth. Para imprimir el marco y la base de montaje hay que usar PETG o ASA; el PLA puede ablandarse en un coche aparcado. Además de revisar el diseño, hay que probarlo con los cables y clavijas reales y sujetarlo todo antes de cerrar.

Caja negra de Blue&Me con su conector azul.
La caja original de Blue&Me, reutilizada para el nuevo montaje.
Caja vacía con los apoyos originales y la abertura del conector.
El interior de la caja vacía, antes de colocar el soporte impreso.
Interior de la caja con cotas y puntos de fijación anotados.
Las medidas que anoté durante el montaje. Son un registro para contrastar con el CAD, no las cotas de referencia.
Marco blanco impreso colocado en la caja negra vacía.
Una de las versiones del marco impreso que probé dentro de la caja original. Es una versión intermedia, no la definitiva.
Pi, placa CAN azul y tarjeta de sonido USB negra distribuidas en la caja.
Una prueba de distribución: la Pi, el módulo CAN y la tarjeta de sonido USB sobre el soporte. En rojo, los puntos donde las piezas se estorbaban en esta prueba. No es la distribución final, ni el cableado ni las masas definitivas.
Electrónica cableada bajo un marco blanco impreso dentro de la caja negra.
El nuevo montaje dentro de la caja original, sobre el banco de trabajo el 1 de octubre de 2026. Es anterior a la reparación de las masas del 11 de octubre, que esta foto no muestra.
Dos vistas del suelo de la caja con superposiciones de colores que marcan dónde van el convertidor buck, la tarjeta de sonido, el módulo CAN y la Pi con la placa perforada; la vista de la derecha, con el marco impreso colocado.
La distribución sobre el suelo de la caja. Azul: la Pi y la placa perforada. Morado: el módulo CAN. Verde: la tarjeta de sonido con sus clavijas. Naranja: el buck, colgado del marco con dos bridas. Círculos: torretas y postes que hay que esquivar.
Modelo 3D del soporte: un marco amarillo sobre cuatro postes encima de una base de montaje azul que lleva bloques de colores para la Pi, el módulo CAN, la tarjeta de sonido y el convertidor buck.
Modelo del soporte. En amarillo, el marco apoyado en los cuatro soportes de tornillo; en azul, la base de montaje; en rojo, los salientes de la caja. Comprobé en el modelo que las piezas no interfirieran entre sí ni con la tapa.

Para quitar el adaptador USB, acorté el cable de la tarjeta de sonido y lo soldé a los puntos de prueba bajo la Pi. PP1 corresponde a 5 V, PP6 a masa, PP22 a D+ y PP23 a D−. La salida de 5 V del convertidor va a los pines 4 y 6 de la Pi.

Cables y montaje del conector vistos desde un ángulo bajo.
Una vista lateral del montaje y del recorrido de los cables dentro de la caja.

El conector lleva 32 pines cuadrados de 0.64 mm, separados 2.54 mm, en una placa perforada de 2 × 16 agujeros con unos 5 mm de borde. Solo se cablean los pines necesarios. Marcar los pines 1 y 17 y comprobar que coinciden con el "1" y el "17" del enchufe antes de conectarlo.

Pequeña placa perforada con pines del conector y cables que entran en la caja.
El soporte del conector y la placa perforada en la abertura de la caja.

Sujetar y aislar los cables de los pads USB. Si la tarjeta desaparece con device descriptor read/64, error -71, revisar los cables de datos y sus soldaduras. No reiniciar el controlador USB de la Zero W mediante unbind: en mi prueba hizo caer el kernel y USB no volvió hasta cortar la alimentación.

Wi-Fi mientras suena el audio

En la Zero W, Bluetooth y Wi-Fi comparten el mismo chip de radio. Medí estas pérdidas de paquetes con la Pi conectada al punto de acceso del móvil. Al apagar Wi-Fi, los cortes de música desaparecieron.

Wi-FiPaquetes de audio perdidos por minuto
Wi-Fi encendido, conectado al punto de acceso, sin transferencias150–320
Encendido, con tráfico SSH500–1200
Apagado0

Añadí un pequeño servicio para que lo hiciera por mí. Comprueba los flujos de audio Bluetooth cada tres segundos y apaga el Wi-Fi durante la música o una llamada. Treinta segundos después de parar el audio lo vuelve a encender. Solo lo restaura si lo apagó él, así que respeta lo que haya hecho el modo de espera.

En el coche, Wi-Fi se apaga dos segundos después de empezar la música. Para entrar en la Pi por SSH, pauso la música y espero unos 40 segundos.

Créditos

fmntf/fiatcan y la serie de cuatro artículos en medium.com/@fmntf — el protocolo del Doblò 263, el truco de repetir la respuesta PROXI de otro nodo y la idea sobre los tiempos del initramfs. karolkrupa/alfa-blue-me — la implementación para el Alfa 159, la confirmación independiente del mapa de caracteres y las respuestas sobre el ancho de identificador del Giulietta. terilenard/mcp2515-tja1050-wiring — la modificación de raíles separados y las fotografías del paso 2 y del paso 5. Beyondlogic — el pinout CAN de la Raspberry Pi y la configuración del overlay. La fotografía de la Pi Zero W del paso 5 es de Gareth Halfacree, con licencia CC BY-SA 2.0, vía Wikimedia Commons, anotada aquí con las posiciones de los pines.

El código está en github.com/crimeofheart/giulietta-blue-me. Genero las tablas del protocolo a partir del código. Para ver la versión actual, uso blueandme-protocol-map.