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.
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed0bb4cdc668761e1a54e3901203769bdffcc4415f40902e68e14e8ea69fa3cd
|
|
| MD5 |
9ba02e6f80efa363dc0d33f5f0cbb1fb
|
|
| BLAKE2b-256 |
3b59e7d71c80b367377d37616759729802956a7beaeb5d4921323e6b3c878285
|
Provenance
The following attestation bundles were made for mibbridge-0.1.tar.gz:
Publisher:
python-publish.yml on hahnworks/MIBBridge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mibbridge-0.1.tar.gz -
Subject digest:
ed0bb4cdc668761e1a54e3901203769bdffcc4415f40902e68e14e8ea69fa3cd - Sigstore transparency entry: 692499514
- Sigstore integration time:
-
Permalink:
hahnworks/MIBBridge@fc1c182f859866aad05d845d8f001d14d3aaa733 -
Branch / Tag:
refs/tags/v0.1 - Owner: https://github.com/hahnworks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@fc1c182f859866aad05d845d8f001d14d3aaa733 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
faef47a6339ed55322b3ec48b9ccb076c7c4c5d827d148a34f3a3f29583bbe2c
|
|
| MD5 |
496d2afb5dc85253a3eb3187d202c55a
|
|
| BLAKE2b-256 |
4044d711420f291e5ee875d7e5d1f27499424dc0e32e00c26fad5287cf117433
|
Provenance
The following attestation bundles were made for mibbridge-0.1-py3-none-any.whl:
Publisher:
python-publish.yml on hahnworks/MIBBridge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mibbridge-0.1-py3-none-any.whl -
Subject digest:
faef47a6339ed55322b3ec48b9ccb076c7c4c5d827d148a34f3a3f29583bbe2c - Sigstore transparency entry: 692499522
- Sigstore integration time:
-
Permalink:
hahnworks/MIBBridge@fc1c182f859866aad05d845d8f001d14d3aaa733 -
Branch / Tag:
refs/tags/v0.1 - Owner: https://github.com/hahnworks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@fc1c182f859866aad05d845d8f001d14d3aaa733 -
Trigger Event:
release
-
Statement type: