Skip to main content

Bridge VW up! MIB infotainment units and TCP clients via Bluetooth

Project description

🚗🛜📲 MIBBridge

A simple bridge to connect to the internal HTTP(S) server present on the media units of the VWAG New Small Family cars (VW up!, Škoda Citigo and SEAT Mii), as the maps+more app does.

[!NOTE] This bridge does not implement interfacing with the Volkswagen Infotainment Web Interface (VIWI) but only provides the bridge for sending traffic via Bluetooth to it. An application to access the REST interface and handle authentication with the car is in preparation.

a screenshot of MIBBridge in action, allowing the request GET /car/info/vin to be performed

Motivation

The Volkswagen New Small Family Platform features the possibility to include the so called “Composite Phone” upgrade. This allows you to use the Volkswagen-provided maps+more app to access the data of the car and to navigate, essentially moving the functionality of a “real” infotainment system to your phone. The maps+more app communicates with the car via a REST API (which is partially documented here and here), while all HTTP traffic is tunnelled via RFCOMM. This application implements this tunnel.

Installation

pip

You can install MIBBridge from pip:

pip install mibbridge

Status

Getting the VIN via GET /car/info/vin works. All other requests work as well.

Command Line Usage

Connect to the car via Bluetooth.

Then run:

mibbridge <mac address/Unix socket> [mapping]

Input the MAC column separated, e.g. 12:34:56:78:90:00. The application automatically binds to localhost. The default mapping is 4080:80,4443:443, which resembles the default mapping in the maps+more app.

Now you can access the cars data via e.g. curl.

API Usage

from mibbridge import MIBBridge

# create your bluetooth socket
BT_ADDR = "12:34:56:78:90:00"
socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
socket.connect((BT_ADDR, 5))

# set up your port mapping (dict, key is local, value is car side)
mapping = {4080 : 80, 4443 : 443}

#set up logging (optional)
logger = logging.getLogger("MIBBridge")
logging.basicConfig(level=logging.INFO)

# set up MIBBridge
bridge = MIBBridge(socket, mapping, logger=logger)

# run
bridge.start()

# stop with
bridge.stop()

Note that stop() does stop all TCP connections, but not the passed socket. The passed socket can either be a bluetooth.BluetoothSocket or a regular socket.socket.

Protocol Details

See here.

Disclaimer

This project is not associated with VWAG or its sub-brands. All trademarks are the property of their respective owners.

This program is free software: you can redistribute it and/or modify it under the terms of the European Union Public License (EUPL), version 1.2.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the European Union Public License for more details.

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mibbridge-0.1.tar.gz (78.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mibbridge-0.1-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file mibbridge-0.1.tar.gz.

File metadata

  • Download URL: mibbridge-0.1.tar.gz
  • Upload date:
  • Size: 78.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mibbridge-0.1.tar.gz
Algorithm Hash digest
SHA256 ed0bb4cdc668761e1a54e3901203769bdffcc4415f40902e68e14e8ea69fa3cd
MD5 9ba02e6f80efa363dc0d33f5f0cbb1fb
BLAKE2b-256 3b59e7d71c80b367377d37616759729802956a7beaeb5d4921323e6b3c878285

See more details on using hashes here.

Provenance

The following attestation bundles were made for mibbridge-0.1.tar.gz:

Publisher: python-publish.yml on hahnworks/MIBBridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mibbridge-0.1-py3-none-any.whl.

File metadata

  • Download URL: mibbridge-0.1-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mibbridge-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 faef47a6339ed55322b3ec48b9ccb076c7c4c5d827d148a34f3a3f29583bbe2c
MD5 496d2afb5dc85253a3eb3187d202c55a
BLAKE2b-256 4044d711420f291e5ee875d7e5d1f27499424dc0e32e00c26fad5287cf117433

See more details on using hashes here.

Provenance

The following attestation bundles were made for mibbridge-0.1-py3-none-any.whl:

Publisher: python-publish.yml on hahnworks/MIBBridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page