robertnisipeanu/mgu-store

Hardware & IoT

Install, update, and remove apps on BMW iDrive 7/8 head units from GitHub, web URLs, or USB drives.

219
27
JavaScript
GPL-3.0
5 days old

What it is

mgu-store is an app store and installer for BMW iDrive 7 and iDrive 8 head units (MGU). Instead of sideloading packages by hand, you browse a catalog on the car's screen, install or remove apps, and get updates later through the same interface. Sources can be GitHub repositories (releases, tags, or a branch), any HTTPS URL serving a catalog, or a USB stick for offline cars.

The installer puts the Store itself on the head unit along with the pieces it depends on: the GitHub updater, a deploy tool that performs and can roll back installs, an app-privacy component that keeps installed apps out of the head unit's reports to BMW, the renderer that draws the UI, Python for apps built from source, and an optional internet uplink. A companion phone page shows sources, installs, errors, and logs, and lets you use a real keyboard for adding sources and tokens.

It is aimed at owners of iDrive 7/8 cars who are comfortable with root SSH access to the head unit and want to run community-built apps. The flow is documented end to end in the README.

Prerequisites

  • A Windows 10/11, macOS, or Linux computer with Node.js 18 or newer and the OpenSSH client.
  • Root SSH access to the head unit and root's private key. idrive7-8-ssh-root sets this up over an ENET cable.
  • A route to the head unit's SSH: the car's Wi-Fi hotspot (default 172.16.222.97), ENET, or another SSH path.
  • The car parked and on stable power until the install completes.

Quick start

With the computer connected to the head unit's network, run the installer using root's SSH key.

On macOS or Linux:

curl -fsSL https://raw.githubusercontent.com/robertnisipeanu/mgu-store/main/deploy/mgu-install.js | node - first-install --identity ~/.ssh/mgu_root_key

On Windows PowerShell:

irm https://raw.githubusercontent.com/robertnisipeanu/mgu-store/main/deploy/mgu-install.js -OutFile mgu-install.js; if ($?) { node mgu-install.js first-install --identity $HOME\.ssh\mgu_root_key }

The installer finds the head unit automatically and prints which connection it used. Restart the head unit when prompted. After the restart, the Store tile appears among the car's apps, and subsequent updates go through the Store.

Useful options: --host/--port to point at a specific SSH address, --user to change the SSH user (default root), --ssh-opt for extra ssh -o settings (e.g. --ssh-opt ProxyJump=<jump host> together with --host), --token for private repositories, and --no-uplink / --no-renderer to leave out those components. The installer reference documents every command.

Using the Store

The side menu has four pages: Store (apps and tools from your sources with their state), Installed (installed packages, with Update and Update all), USB (what a plugged-in stick offers), and Settings (sources, Wi-Fi, accounts, phone access, Check now, Restart head unit). Open an app to install, update, or remove it. Updates never install on their own, and anything marked Restart pending takes effect after a head-unit restart.

Default sources are this repository, idrive7-apps, idrive-apps (renderer for the instrument cluster and HUD, CarPlay map on the cluster), and car-apps (mostly iDrive 8 only). Add a source with Settings → Add source, entering owner/repo, a GitHub link, or an HTTPS catalog.json URL; for GitHub repos, choose Releases, Tags, or a branch.

Private repositories need an account under Settings → Accounts: either Sign in with GitHub (requires the mgu-store GitHub App) or a fine-grained token with Contents read-only, limited to the selected repositories. The full token walkthrough is in the README.

Offline installs

Without internet in the car, prepare a USB stick on the computer:

node mgu-install.js usb-repo <stick> [github:owner/repo | <catalog URL> | <folder> | <package file> ...]

With no inputs it copies this repository's newest release. Plug the stick into the car and use the USB page.

Constraints

  • iDrive 8 is tested in an emulator only, not yet on a real car; on iDrive 8, installs and removals take effect at the next head-unit restart.
  • On iDrive 8 widget screens without mgu-render, on-screen typing does not work yet; add sources and tokens from the phone page or the computer, or use Sign in with GitHub.
  • Internet in the car depends on the uplink: USB Ethernet adapter, LTE stick, USB-tethered Android or iPhone, or Wi-Fi. On iDrive 7 units with a Broadcom radio, WPA3-only networks cannot be joined. iPhone USB tethering stops USB music playback while active.
  • Apps must not bundle BMW SDK files (the head unit links against its own SDK), need a unique prefixed id and an mguHmi field (ID7, ID8, or both); set "mguInternet": true if the app needs connectivity. See PUBLISHING.md.
  • The project is GPL-3.0-or-later; third-party parts keep their own licences.

HotRepo's take

No GitHub daily ranking was recorded for this repository, so there is no cross-project placement to report. What the star curve does show is a steady rise over roughly 20 hours on 2026-10-31 to 2026-11-01, from 102 to 216 stars, with 114 gained inside a single measured window in the GitHub new-project JavaScript ranking. A jump of that size in under a day suggests the tool found an audience quickly among iDrive owners, though the repository had no forum discussion attached in the data. Because iDrive 8 support is emulator-only for now, the most immediate constraint on adoption is the real-car testing gap rather than the feature set.

Written by AI from the project's README, updated . The project's own docs are the source of truth.