6 Commits

Author SHA1 Message Date
1okko b5c035cda4 666 2026-04-30 08:27:16 +08:00
Calvin Park 66bac16eb6 Update recommended branches 2025-09-07 11:39:29 -07:00
Calvin Park 9c26885363 Fix the tap / button click handling 2025-09-06 23:44:28 -07:00
Calvin Park fbf834a656 Update the button lib path 2025-09-06 21:46:42 -07:00
Calvin Park a128236026 TSK Manager v0.10.0 2025-09-06 21:02:37 -07:00
Vehicle Researcher 9f648e0963 openpilot v0.10.1 2025-08-24 02:10:58 -07:00
3281 changed files with 1031399 additions and 634707 deletions
+19
View File
@@ -0,0 +1,19 @@
---
Checks: '
bugprone-*,
-bugprone-integer-division,
-bugprone-narrowing-conversions,
performance-*,
clang-analyzer-*,
misc-*,
-misc-unused-parameters,
modernize-*,
-modernize-avoid-c-arrays,
-modernize-deprecated-headers,
-modernize-use-auto,
-modernize-use-using,
-modernize-use-nullptr,
-modernize-use-trailing-return-type,
'
CheckOptions:
...
+39
View File
@@ -0,0 +1,39 @@
**/.git
.DS_Store
*.dylib
*.DSYM
*.d
*.pyc
*.pyo
.*.swp
.*.swo
.*.un~
*.tmp
*.o
*.o-*
*.os
*.os-*
*.so
*.a
venv/
.venv/
notebooks
phone
massivemap
neos
installer
chffr/app2
chffr/backend/env
selfdrive/nav
selfdrive/baseui
selfdrive/test/simulator2
**/cache_data
xx/plus
xx/community
xx/projects
!xx/projects/eon_testing_master
!xx/projects/map3d
xx/ops
xx/junk
+11
View File
@@ -0,0 +1,11 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{py,pyx,pxd}]
charset = utf-8
indent_style = space
indent_size = 2
-30
View File
@@ -1,30 +0,0 @@
* text=auto eol=lf
# to move existing files into LFS:
# git add --renormalize .
# Keep this icon in regular git (not LFS) for lightweight branding iteration.
selfdrive/assets/icons_mici/experimental_mode_mici.png -filter -diff -merge -text
selfdrive/assets/icons_mici/experimental_mode_tizi.png -filter -diff -merge -text
selfdrive/assets/icons_mici/onroad/driver_monitoring/dm_center.png -filter -diff -merge -text
selfdrive/assets/icons_mici/onroad/driver_monitoring/dm_cone.png -filter -diff -merge -text
selfdrive/assets/icons_mici/settings/konn3kt_icon.png -filter -diff -merge -text
selfdrive/assets/icons_mici/buttons/toggle_dot_enabled.png -filter -diff -merge -text
iqpilot/selfdrive/assets -filter -diff -merge -text
selfdrive/assets/icons_mici/buttons/toggle_pill_enabled.png -filter -diff -merge -text
selfdrive/assets/icons_mici/offroad_alerts/green_wheel.png -filter -diff -merge -text
selfdrive/assets/icons_mici/setup/green_button.png -filter -diff -merge -text
selfdrive/assets/icons_mici/setup/green_button_pressed.png -filter -diff -merge -text
selfdrive/assets/icons_mici/setup/green_dm.png -filter -diff -merge -text
selfdrive/assets/icons_mici/setup/green_info.png -filter -diff -merge -text
selfdrive/assets/icons_mici/setup/small_slider/slider_green_rounded_rectangle.png -filter -diff -merge -text
selfdrive/assets/images/spinner_comma.png -filter -diff -merge -text
selfdrive/assets/images/k3_spinner.png -filter -diff -merge -text
selfdrive/assets/icons/camera.png -filter -diff -merge -text
selfdrive/assets/fonts/Syncopate-Regular.ttf -filter -diff -merge -text
selfdrive/assets/fonts/Tektur-Variable.ttf -filter -diff -merge -text
# IQ assets, including icon_longitudinal.png, should stay in normal git (not LFS).
iqpilot/selfdrive/assets/** -filter -diff -merge -text
+47
View File
@@ -0,0 +1,47 @@
name: Bug report
description: For issues with running openpilot on your comma device
labels: ["bug"]
body:
- type: markdown
attributes:
value: >
Before creating a **bug report**, please check the following:
* If the issue likely only affects your car model or make, go back and open a **car bug report** instead.
* If the issue is related to the driving or driver monitoring models, you should open a [discussion](https://github.com/commaai/openpilot/discussions/categories/model-feedback) instead.
* Ensure you're running the latest openpilot release.
* Ensure you're using officially supported hardware. Issues running on PCs have a different issue template.
* Ensure there isn't an existing issue for your bug. If there is, leave a comment on the existing issue.
* Ensure you're running stock openpilot. We cannot look into bug reports from forks.
If you're unsure whether you've hit a bug, check out the #installation-help channel in the [community Discord server](https://discord.comma.ai).
- type: textarea
attributes:
label: Describe the bug
description: Also include a description of how to reproduce the bug
validations:
required: true
- type: input
id: route
attributes:
label: Provide a route where the issue occurs
description: Ensure the route is fully uploaded at https://useradmin.comma.ai. We cannot look into issues without routes, or at least a Dongle ID.
placeholder: 77611a1fac303767|2020-05-11--16-37-07
validations:
required: true
- type: input
id: version
attributes:
label: openpilot version
description: If you're not on release, provide the commit hash
placeholder: 0.8.10
validations:
required: true
- type: textarea
attributes:
label: Additional info
+14
View File
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Car bug report
url: https://github.com/commaai/opendbc/issues/new
about: For issues with a particular car make or model
- name: Join the Discord
url: https://discord.comma.ai
about: The community Discord is for both openpilot development and experience discussion
- name: Report driving behavior feedback
url: https://discord.com/channels/469524606043160576/1254834193066623017
about: Feedback for the driving and driver monitoring models goes in the #driving-feedback in Discord
- name: Community Wiki
url: https://github.com/commaai/openpilot/wiki
about: Check out our community wiki
+8
View File
@@ -0,0 +1,8 @@
---
name: Enhancement
about: For openpilot enhancement suggestions
title: ''
labels: 'enhancement'
assignees: ''
---
+42
View File
@@ -0,0 +1,42 @@
name: PC bug report
description: For issues with running openpilot on PC
labels: ["PC"]
body:
- type: markdown
attributes:
value: >
Before creating a **bug report**, please check the following:
* Ensure you're running the latest openpilot release.
* Ensure there isn't an existing issue for your bug. If there is, leave a comment on the existing issue.
* Ensure you're running stock openpilot. We cannot look into bug reports from forks.
If you're unsure whether you've hit a bug, check out the #installation-help channel in the [community Discord server](https://discord.comma.ai).
- type: textarea
attributes:
label: Describe the bug
description: Also include a description of how to reproduce the bug
validations:
required: true
- type: input
id: os-version
attributes:
label: OS Version
placeholder: Ubuntu 24.04
validations:
required: true
- type: input
id: version
attributes:
label: openpilot version or commit
placeholder: bd36f2ec8d3559909678eff2690c10a520938367
validations:
required: false
- type: textarea
attributes:
label: Additional info
+27
View File
@@ -0,0 +1,27 @@
CI / testing:
- changed-files:
- any-glob-to-all-files: "{.github/**,**/test_*,**/test/**,Jenkinsfile}"
car:
- changed-files:
- any-glob-to-all-files: '{selfdrive/car/**,opendbc_repo}'
simulation:
- changed-files:
- any-glob-to-all-files: 'tools/sim/**'
ui:
- changed-files:
- any-glob-to-all-files: '{selfdrive/ui/**,system/ui/**}'
tools:
- changed-files:
- any-glob-to-all-files: 'tools/**'
multilanguage:
- changed-files:
- any-glob-to-all-files: 'selfdrive/ui/translations/**'
autonomy:
- changed-files:
- any-glob-to-all-files: "{selfdrive/modeld/models/**,selfdrive/test/process_replay/model_replay_ref_commit}"
+68
View File
@@ -0,0 +1,68 @@
<!-- Please copy and paste the relevant template -->
<!--- ***** Template: Fingerprint *****
**Car**
Which car (make, model, year) this fingerprint is for
**Route**
A route with the fingerprint
-->
<!--- ***** Template: Car Bugfix *****
**Description**
A description of the bug and the fix. Also link the issue if it exists.
**Verification**
Explain how you tested this bug fix.
**Route**
Route: [a route with the bug fix]
-->
<!--- ***** Template: Bugfix *****
**Description**
A description of the bug and the fix. Also link the issue if it exists.
**Verification**
Explain how you tested this bug fix.
-->
<!--- ***** Template: Car Port *****
**Checklist**
- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)
- [ ] route with openpilot:
- [ ] route with stock system:
- [ ] car harness used (if comma doesn't sell it, put N/A):
-->
<!--- ***** Template: Refactor *****
**Description**
A description of the refactor, including the goals it accomplishes.
**Verification**
Explain how you tested the refactor for regressions.
-->
+11 -24
View File
@@ -1,7 +1,5 @@
venv/ venv/
.venv/ .venv/
!artifacts/runtime/ble/rootfs/usr/local/venv/
!artifacts/runtime/ble/rootfs/usr/local/venv/**
.ci_cache .ci_cache
.env .env
.clang-format .clang-format
@@ -9,9 +7,11 @@ venv/
.tags .tags
.ipynb_checkpoints .ipynb_checkpoints
.idea .idea
*.iml
.overlay_init .overlay_init
.overlay_consistent .overlay_consistent
.sconsign.dblite .sconsign.dblite
model2.png
a.out a.out
.hypothesis .hypothesis
.cache/ .cache/
@@ -22,10 +22,7 @@ a.out
*.dylib *.dylib
*.DSYM *.DSYM
*.d *.d
!artifacts/runtime/ble/rootfs/etc/udev/rules.d/
!artifacts/runtime/ble/rootfs/etc/udev/rules.d/**
*.pyc *.pyc
!artifacts/iqpilot_*_private/**/*.pyc
*.pyo *.pyo
.*.swp .*.swp
.*.swo .*.swo
@@ -36,32 +33,35 @@ a.out
*.os *.os
*.os-* *.os-*
*.so *.so
!artifacts/iqpilot_*_private/**/*.so
!artifacts/runtime/ble/rootfs/usr/local/venv/**/*.so
artifacts/iqpilot_private/
artifacts/iqpilot_*_private/python/iqpilot_private/**/*.cpython-*-darwin.so
*.a *.a
*.clb *.clb
*.class *.class
*.pyxbldc *.pyxbldc
*.vcd *.vcd
*.mo *.qm
*_pyx.cpp *_pyx.cpp
*.stats
config.json config.json
clcache clcache
compile_commands.json compile_commands.json
compare_runtime*.html compare_runtime*.html
persist
selfdrive/pandad/pandad selfdrive/pandad/pandad
cereal/services.h cereal/services.h
cereal/gen cereal/gen
cereal/messaging/bridge cereal/messaging/bridge
selfdrive/mapd/default_speeds_by_region.json
system/proclogd/proclogd
selfdrive/ui/translations/tmp selfdrive/ui/translations/tmp
selfdrive/test/longitudinal_maneuvers/out
selfdrive/car/tests/cars_dump selfdrive/car/tests/cars_dump
system/camerad/camerad system/camerad/camerad
system/camerad/test/ae_gray_test system/camerad/test/ae_gray_test
notebooks
hyperthneed
provisioning
.coverage* .coverage*
coverage.xml coverage.xml
htmlcov htmlcov
@@ -74,11 +74,7 @@ cppcheck_report.txt
comma*.sh comma*.sh
selfdrive/modeld/models/*.pkl selfdrive/modeld/models/*.pkl
iqpilot/modeld*/thneed/compile
iqpilot/modeld*/models/*.thneed
iqpilot/modeld*/models/*.pkl
# openpilot log files
*.bz2 *.bz2
*.zst *.zst
@@ -107,12 +103,3 @@ Pipfile
# Ignore all local history of files # Ignore all local history of files
.history .history
.ionide .ionide
.claude/
PLAN.md
TASK.md
### JetBrains ###
!.idea/customTargets.xml
!.idea/tools/*
!.run/*
-4
View File
@@ -1,4 +0,0 @@
[lfs]
url = https://gitlab.com/commaai/openpilot-lfs.git/info/lfs
pushurl = ssh://git@gitlab.com/commaai/openpilot-lfs.git
locksverify = false
+8
View File
@@ -0,0 +1,8 @@
{
"recommendations": [
"ms-python.python",
"ms-vscode.cpptools",
"elagil.pre-commit-helper",
"charliermarsh.ruff",
]
}
+46
View File
@@ -0,0 +1,46 @@
{
"version": "0.2.0",
"inputs": [
{
"id": "python_process",
"type": "pickString",
"description": "Select the process to debug",
"options": [
"selfdrive/controls/controlsd.py",
"system/timed/timed.py",
"tools/sim/run_bridge.py"
]
},
{
"id": "cpp_process",
"type": "pickString",
"description": "Select the process to debug",
"options": [
"selfdrive/ui/ui"
]
},
{
"id": "args",
"description": "Arguments to pass to the process",
"type": "promptString"
}
],
"configurations": [
{
"name": "Python: openpilot Process",
"type": "debugpy",
"request": "launch",
"program": "${input:python_process}",
"console": "integratedTerminal",
"justMyCode": true,
"args": "${input:args}"
},
{
"name": "C++: openpilot Process",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${input:cpp_process}",
"cwd": "${workspaceFolder}",
}
]
}
+27
View File
@@ -0,0 +1,27 @@
{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.renderWhitespace": "trailing",
"files.trimTrailingWhitespace": true,
"search.exclude": {
"**/.git": true,
"**/.venv": true,
"**/__pycache__": true
},
"files.exclude": {
"**/.git": true,
"**/.venv": true,
"**/__pycache__": true
},
"python.analysis.exclude": [
"**/.git",
"**/.venv",
"**/__pycache__",
// exclude directories that should be using the symlinked version
"common/**",
"selfdrive/**",
"system/**",
"third_party/**",
"tools/**",
]
}
-106
View File
@@ -1,106 +0,0 @@
# IQ.Pilot User Changelog
This changelog is written for everyday drivers and focuses on what you will notice on the road.
## February 9, 2026 - IQ.Pilot Launch
- IQ.Pilot v1.0a launched.
- You got first-release IQ.Pilot + Konn3kt integration.
- The UI was rebranded and cleaned up for a more consistent look.
- Unused legacy UI/debug elements were removed.
- Early setup and reliability issues were fixed (better error handling and cleaner setup flow).
## February 10, 2026 - Device Support and Stability
- Better mici and tizi device support.
- You can now use manual QR registration.
- Volkswagen PQ support was enabled and expanded.
- A major bugfix pass improved stability and controls behavior.
- Cruise/button behavior was refined for more consistent response.
## February 11, 2026 - Major Vehicle Expansion
- Tesla control support was expanded.
- Honda MVL tuning (lateral + longitudinal) was added.
- Volkswagen support grew across PQ and MLB with multiple fixes.
- PQ bring-up continued, including Passat NMS-focused improvements.
- More runtime fixes landed (including joystick and icon issues).
## February 12, 2026 - Sensor/Data Fixes
- Steering-angle offset tolerance was increased, helping with temporary steering sensor misalignment.
- Fuel level handling was fixed and improved.
- Additional Volkswagen PQ follow-up fixes were added.
## February 13, 2026 - Driver Monitoring Rollback
- Driver Monitoring was rolled back to previous behavior to reduce over aggressive alerts from a regression caused by a new comma DM model.
## February 15-16, 2026 - Volkswagen PQ Maturity
- Volkswagen PQ received heavy control tuning and bugfixes.
- You should see more consistent engagement and smoother overall behavior.
- Lateral/longitudinal interaction and cruise response were improved.
## February 17, 2026 - Volkswagen Stopping Behavior Tuning
- Volkswagen stopping and braking behavior received additional tuning.
- Comfort and stop-response were further refined for real-world driving.
## February 27, 2026 - Major Refactor
- IQ.Pilot completed a major refactor and is now independent of any other fork.
- Driving logic cleanup removed legacy compatibility paths that could cause inconsistent behavior between vehicles and branches.
- New (way better) Always On Lateral logic!
- Better longitudinal controls for clearer choices for everyday use: `IQ.Pilot`, `IQ.Dynamic`, `IQ.Standard`, and your vehicles `Stock ACC`.
- Device/System controls were reworked for better offroad management, including a timed Force On-Road workflow for diagnostics/testing.
- Volkswagen MEB/MQBEvo platform support!
- Offroad UI and settings UI rework!
## March 16th - IQ.Pilot 1.0c Pre-Release
- IQ.Pilot has continued refactoring componenets to be more efficient, and better written, with better logic.
- Navigation, with On-Screen maps, online routing, fully offline routing
## April 21, 2026 - IQ.Pilot 1.0c
**Speed Limit Control (SLC)**
IQ.Pilot can now read and act on speed limits from your dash, Mapbox, and offline maps. You pick what mode you want in settings: display only, warn you when you're over, or actually adjust your cruise speed. You also pick which source wins when they disagree (dash, Mapbox, map data, highest, or lowest reported limit). There's a look-ahead setting so IQ.Pilot can start reacting to an upcoming speed change before you hit the sign. GPS fix is required before any speed limit data is trusted.
**IQ.Dynamic Force Stop**
In IQ.Dynamic blended mode, when IQ.Pilot sees a stop light ahead, the model agrees you need to stop, and there's no lead car to track, it will now commit to stopping on its own without needing lead car confirmation. Gas pedal overrides it instantly. The stop prediction horizon is adjustable in IQ.Dynamic settings.
**Dashcam toggle**
You can now fully disable dashcam recording from settings. Turning it off stops all recording, no logs, no video, no audio. Default is on.
**Konn3kt app theme syncs to your device**
Whatever accent color you pick in the Konn3kt app's appearance settings now flows to your device in real time. The IQ.Pilot UI glows match your color within a couple of seconds of changing it in the app.
**Volkswagen improvements**
- MQBevo (Golf 8, etc.) now has IQ.Pilot Longitudinal, not just lateral
- MQB got standstill! + VW Tuning, smoother accelerator overrides, less phantom cruise faults, better overall longitudinal control logic.
- Konn3kt can now code LKAS, including enabling, disabling, and checking status and EPS compatibility with Comma Power plugged into your IQ.Pilot devices hardware relay!
**Tesla updates**
Tesla control got another pass of improvements (lateral and longitudinal behavior), including updates to support the new Tesla fingerprint in the latest Tesla software update.
**More vehicle fingerprints**
Hyundai/Kia fingerprint coverage was expanded to cover more variants that were previously unrecognized.
**Toyota Stop-and-Go**
New support added for Stop and Go for Toyota/Lexus!
**New driving model**
IQ.Pilot updated to a new driving model `Pop!`, as always we support all models ASAP to be on the bleeding edge in our pre-release branches.
**Settings expanded**
- IQ.Dynamic got its own dedicated settings page with controls for stop prediction horizon and force stop tuning
- Cruise settings gained speed limit mode, SLC source priority, speed limit look-ahead, lane turn desire speed threshold, and steer actuator delay adjustment
- Steer delay settings now show the value formatted in seconds
**Laying groundwork for future hardware**
eSIM management is now fully built into the device settings on supported hardware. The app can detect whether your device has an embedded SIM, provision it, and manage profiles without needing a physical SIM swap.
+12
View File
@@ -0,0 +1,12 @@
FROM ghcr.io/commaai/openpilot-base:latest
ENV PYTHONUNBUFFERED=1
ENV OPENPILOT_PATH=/home/batman/openpilot
RUN mkdir -p ${OPENPILOT_PATH}
WORKDIR ${OPENPILOT_PATH}
COPY . ${OPENPILOT_PATH}/
RUN scons --cache-readonly -j$(nproc)
+81
View File
@@ -0,0 +1,81 @@
FROM ubuntu:24.04
ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends sudo tzdata locales ssh pulseaudio xvfb x11-xserver-utils gnome-screenshot python3-tk python3-dev && \
rm -rf /var/lib/apt/lists/*
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
COPY tools/install_ubuntu_dependencies.sh /tmp/tools/
RUN /tmp/tools/install_ubuntu_dependencies.sh && \
rm -rf /var/lib/apt/lists/* /tmp/* && \
cd /usr/lib/gcc/arm-none-eabi/* && \
rm -rf arm/ thumb/nofp thumb/v6* thumb/v8* thumb/v7+fp thumb/v7-r+fp.sp
# Add OpenCL
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils \
alien \
unzip \
tar \
curl \
xz-utils \
dbus \
gcc-arm-none-eabi \
tmux \
vim \
libx11-6 \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /tmp/opencl-driver-intel && \
cd /tmp/opencl-driver-intel && \
wget https://github.com/intel/llvm/releases/download/2024-WW14/oclcpuexp-2024.17.3.0.09_rel.tar.gz && \
wget https://github.com/oneapi-src/oneTBB/releases/download/v2021.12.0/oneapi-tbb-2021.12.0-lin.tgz && \
mkdir -p /opt/intel/oclcpuexp_2024.17.3.0.09_rel && \
cd /opt/intel/oclcpuexp_2024.17.3.0.09_rel && \
tar -zxvf /tmp/opencl-driver-intel/oclcpuexp-2024.17.3.0.09_rel.tar.gz && \
mkdir -p /etc/OpenCL/vendors && \
echo /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64/libintelocl.so > /etc/OpenCL/vendors/intel_expcpu.icd && \
cd /opt/intel && \
tar -zxvf /tmp/opencl-driver-intel/oneapi-tbb-2021.12.0-lin.tgz && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbb.so /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbbmalloc.so /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbb.so.12 /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbbmalloc.so.2 /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
mkdir -p /etc/ld.so.conf.d && \
echo /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 > /etc/ld.so.conf.d/libintelopenclexp.conf && \
ldconfig -f /etc/ld.so.conf.d/libintelopenclexp.conf && \
cd / && \
rm -rf /tmp/opencl-driver-intel
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute
ENV QTWEBENGINE_DISABLE_SANDBOX=1
RUN dbus-uuidgen > /etc/machine-id
ARG USER=batman
ARG USER_UID=1001
RUN useradd -m -s /bin/bash -u $USER_UID $USER
RUN usermod -aG sudo $USER
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER $USER
COPY --chown=$USER pyproject.toml uv.lock /home/$USER
COPY --chown=$USER tools/install_python_dependencies.sh /home/$USER/tools/
ENV VIRTUAL_ENV=/home/$USER/.venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN cd /home/$USER && \
tools/install_python_dependencies.sh && \
rm -rf tools/ pyproject.toml uv.lock .cache
USER root
RUN sudo git config --global --add safe.directory /tmp/openpilot
Vendored
-269
View File
@@ -1,269 +0,0 @@
def retryWithDelay(int maxRetries, int delay, Closure body) {
for (int i = 0; i < maxRetries; i++) {
try {
return body()
} catch (Exception e) {
sleep(delay)
}
}
throw Exception("Failed after ${maxRetries} retries")
}
def device(String ip, String step_label, String cmd) {
withCredentials([file(credentialsId: 'id_rsa', variable: 'key_file')]) {
def ssh_cmd = """
ssh -o ConnectTimeout=5 -o ServerAliveInterval=5 -o ServerAliveCountMax=2 -o BatchMode=yes -o StrictHostKeyChecking=no -i ${key_file} 'comma@${ip}' exec /usr/bin/bash <<'END'
set -e
export TERM=xterm-256color
shopt -s huponexit # kill all child processes when the shell exits
export CI=1
export PYTHONWARNINGS=error
#export LOGPRINT=debug # this has gotten too spammy...
export TEST_DIR=${env.TEST_DIR}
export SOURCE_DIR=${env.SOURCE_DIR}
export GIT_BRANCH=${env.GIT_BRANCH}
export GIT_COMMIT=${env.GIT_COMMIT}
export CI_ARTIFACTS_TOKEN=${env.CI_ARTIFACTS_TOKEN}
export GITHUB_COMMENTS_TOKEN=${env.GITHUB_COMMENTS_TOKEN}
export AZURE_TOKEN='${env.AZURE_TOKEN}'
# only use 1 thread for tici tests since most require HIL
export PYTEST_ADDOPTS="-n0 -s"
export GIT_SSH_COMMAND="ssh -i /data/gitkey"
source ~/.bash_profile
if [ -f /TICI ]; then
source /etc/profile
rm -rf /tmp/tmp*
rm -rf ~/.commacache
rm -rf /dev/shm/*
rm -rf /dev/tmp/tmp*
if ! systemctl is-active --quiet systemd-resolved; then
echo "restarting resolved"
sudo systemctl start systemd-resolved
sleep 3
fi
# restart aux USB
if [ -e /sys/bus/usb/drivers/hub/3-0:1.0 ]; then
echo "restarting aux usb"
echo "3-0:1.0" | sudo tee /sys/bus/usb/drivers/hub/unbind
sleep 0.5
echo "3-0:1.0" | sudo tee /sys/bus/usb/drivers/hub/bind
fi
fi
if [ -f /data/openpilot/launch_env.sh ]; then
source /data/openpilot/launch_env.sh
fi
ln -snf ${env.TEST_DIR} /data/pythonpath
cd ${env.TEST_DIR} || true
time ${cmd}
END"""
sh script: ssh_cmd, label: step_label
}
}
def deviceStage(String stageName, String deviceType, List extra_env, def steps) {
stage(stageName) {
if (currentBuild.result != null) {
return
}
if (isReplay()) {
error("REPLAYING TESTS IS NOT ALLOWED. FIX THEM INSTEAD.")
}
def extra = extra_env.collect { "export ${it}" }.join('\n');
def branch = env.BRANCH_NAME ?: 'master';
def gitDiff = sh returnStdout: true, script: 'curl -s -H "Authorization: Bearer ${GITHUB_COMMENTS_TOKEN}" https://api.github.com/repos/commaai/openpilot/compare/master...${GIT_BRANCH} | jq .files[].filename || echo "/"', label: 'Getting changes'
lock(resource: "", label: deviceType, inversePrecedence: true, variable: 'device_ip', quantity: 1, resourceSelectStrategy: 'random') {
docker.image('ghcr.io/commaai/alpine-ssh').inside('--user=root') {
timeout(time: 35, unit: 'MINUTES') {
retry (3) {
def date = sh(script: 'date', returnStdout: true).trim();
device(device_ip, "set time", "date -s '" + date + "'")
device(device_ip, "git checkout", extra + "\n" + readFile("selfdrive/test/setup_device_ci.sh"))
}
steps.each { item ->
def name = item[0]
def cmd = item[1]
def args = item[2]
def diffPaths = args.diffPaths ?: []
def cmdTimeout = args.timeout ?: 9999
if (branch != "master" && !branch.contains("__jenkins_loop_") && diffPaths && !hasPathChanged(gitDiff, diffPaths)) {
println "Skipping ${name}: no changes in ${diffPaths}."
return
} else {
timeout(time: cmdTimeout, unit: 'SECONDS') {
device(device_ip, name, cmd)
}
}
}
}
}
}
}
}
def hasPathChanged(String gitDiff, List<String> paths) {
for (path in paths) {
if (gitDiff.contains(path)) {
return true
}
}
return false
}
def isReplay() {
def replayClass = "org.jenkinsci.plugins.workflow.cps.replay.ReplayCause"
return currentBuild.rawBuild.getCauses().any{ cause -> cause.toString().contains(replayClass) }
}
def setupCredentials() {
withCredentials([
string(credentialsId: 'azure_token', variable: 'AZURE_TOKEN'),
]) {
env.AZURE_TOKEN = "${AZURE_TOKEN}"
}
withCredentials([
string(credentialsId: 'ci_artifacts_pat', variable: 'CI_ARTIFACTS_TOKEN'),
]) {
env.CI_ARTIFACTS_TOKEN = "${CI_ARTIFACTS_TOKEN}"
}
withCredentials([
string(credentialsId: 'post_comments_github_pat', variable: 'GITHUB_COMMENTS_TOKEN'),
]) {
env.GITHUB_COMMENTS_TOKEN = "${GITHUB_COMMENTS_TOKEN}"
}
}
def step(String name, String cmd, Map args = [:]) {
return [name, cmd, args]
}
node {
env.CI = "1"
env.PYTHONWARNINGS = "error"
env.TEST_DIR = "/data/openpilot"
env.SOURCE_DIR = "/data/openpilot_source/"
setupCredentials()
env.GIT_BRANCH = checkout(scm).GIT_BRANCH
env.GIT_COMMIT = checkout(scm).GIT_COMMIT
def excludeBranches = ['__nightly', 'devel', 'devel-staging', 'release3', 'release3-staging',
'release-tici', 'release-tizi', 'release-tizi-staging', 'testing-closet*', 'hotfix-*']
def excludeRegex = excludeBranches.join('|').replaceAll('\\*', '.*')
if (env.BRANCH_NAME != 'master' && !env.BRANCH_NAME.contains('__jenkins_loop_')) {
properties([
disableConcurrentBuilds(abortPrevious: true)
])
}
try {
if (env.BRANCH_NAME == 'devel-staging') {
deviceStage("build release-tizi-staging", "tizi-needs-can", [], [
step("build release-tizi-staging", "RELEASE_BRANCH=release-tizi-staging $SOURCE_DIR/release/build_release.sh"),
])
}
if (env.BRANCH_NAME == '__nightly') {
parallel (
'nightly': {
deviceStage("build nightly", "tizi-needs-can", [], [
step("build nightly", "RELEASE_BRANCH=nightly $SOURCE_DIR/release/build_release.sh"),
])
},
'nightly-dev': {
deviceStage("build nightly-dev", "tizi-needs-can", [], [
step("build nightly-dev", "PANDA_DEBUG_BUILD=1 RELEASE_BRANCH=nightly-dev $SOURCE_DIR/release/build_release.sh"),
])
},
)
}
if (!env.BRANCH_NAME.matches(excludeRegex)) {
parallel (
'onroad tests': {
deviceStage("onroad", "tizi-needs-can", ["UNSAFE=1"], [
step("build openpilot", "cd system/manager && ./build.py"),
step("check dirty", "release/check-dirty.sh"),
step("onroad tests", "pytest selfdrive/test/test_onroad.py -s", [timeout: 60]),
])
},
'HW + Unit Tests': {
deviceStage("tizi-hardware", "tizi-common", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py", [diffPaths: ["panda", "selfdrive/pandad/"]]),
step("test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"),
step("test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py", [diffPaths: ["system/loggerd/"]]),
step("test manager", "pytest system/manager/test/test_manager.py"),
])
},
'loopback': {
deviceStage("loopback", "tizi-loopback", ["UNSAFE=1"], [
step("build openpilot", "cd system/manager && ./build.py"),
step("test pandad loopback", "pytest selfdrive/pandad/tests/test_pandad_loopback.py"),
])
},
'camerad OX03C10': {
deviceStage("OX03C10", "tizi-ox03c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 60]),
step("test exposure", "pytest system/camerad/test/test_exposure.py"),
])
},
'camerad OS04C10': {
deviceStage("OS04C10", "tici-os04c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 60]),
step("test exposure", "pytest system/camerad/test/test_exposure.py"),
])
},
'sensord': {
deviceStage("LSM + MMC", "tizi-lsmc", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test sensord", "pytest system/sensord/tests/test_sensord.py"),
])
},
'replay': {
deviceStage("model-replay", "tizi-replay", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py", [diffPaths: ["selfdrive/modeld/", "tinygrad_repo", "selfdrive/test/process_replay/model_replay.py"]]),
step("model replay", "selfdrive/test/process_replay/model_replay.py", [diffPaths: ["selfdrive/modeld/", "tinygrad_repo", "selfdrive/test/process_replay/model_replay.py"]]),
])
},
'tizi': {
deviceStage("tizi", "tizi", ["UNSAFE=1"], [
step("build openpilot", "cd system/manager && ./build.py"),
step("test pandad loopback", "SINGLE_PANDA=1 pytest selfdrive/pandad/tests/test_pandad_loopback.py"),
step("test pandad spi", "pytest selfdrive/pandad/tests/test_pandad_spi.py"),
step("test amp", "pytest system/hardware/tici/tests/test_amplifier.py"),
// TODO: enable once new AGNOS is available
// step("test esim", "pytest system/hardware/tici/tests/test_esim.py"),
step("test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py", [diffPaths: ["system/qcomgpsd/"]]),
])
},
)
}
} catch (Exception e) {
currentBuild.result = 'FAILED'
throw e
}
}
+4 -95
View File
@@ -1,98 +1,7 @@
IQ.Lvbs License v0.1a Copyright (c) 2018, Comma.ai, Inc.
Copyright (c) 2026 IQ.Lvbs LLC, a part of Project Teal Lvbs Inc. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
DEFINITIONS The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
"Software" refers to IQ.Pilot, konn3kt, and all associated source code, THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
documentation, and assets owned by the Copyright Holder.
"Open Components" refers to portions of the Software explicitly marked as
open source.
"Proprietary Components" refers to all portions of the Software not made
available to the public in source form.
"Copyright Holder" refers to IQ.Lvbs LLC, a part of Project Teal Lvbs Inc.
GRANT OF LICENSE
Subject to the terms of this license, you are granted a limited,
non-exclusive, revocable license to:
1. View, study, and learn from the Open Components
2. Modify the Open Components for personal, internal, or open-source public use
3. Run the Software for personal, non-commercial purposes
RESTRICTIONS
You may NOT:
1. Claim ownership of any part of the Software, excluding your own
modifications that do not incorporate Proprietary Components.
2. Reverse engineer, decompile, disassemble, or in any way attempt to
circumvent the obfuscation of the Proprietary Components.
3. Use the Software or any derivative for commercial purposes without
explicit written permission from the Copyright Holder.
4. Remove or alter any copyright notices or this license.
5. Sublicense, sell, or transfer rights to the Software.
6. Use the Software and/or its source code to compete with or create a
substantially similar product.
7. Use the Software in closed source software not licensed by IQ.Lvbs LLC.
CONSEQUENCES OF VIOLATION
In the event any Restriction is violated, any product created using inspiration from, or source code from, IQ.Pilot or Konn3kt shall be subject to a licensing fee determined solely by the Copyright Holder. Additionally, the violating party hereby grants IQ.Lvbs LLC an exclusive, irrevocable, worldwide, royalty-free license to use any and all assets from the infringing product on IQ.Lvbs webpages, advertising materials, and in any other manner IQ.Lvbs sees fit.
OWNERSHIP
All rights, title, and interest in the Software remain exclusively with the
Copyright Holder. Any modifications, improvements, or derivative works you
create based on the Software are owned by the Copyright Holder. By
contributing modifications, you irrevocably assign all rights to the
Copyright Holder.
PROPRIETARY COMPONENTS
The Proprietary Components are provided in binary or obfuscated form only.
Reverse engineering, decompilation, or disassembly of Proprietary Components
is strictly prohibited. Violation of this provision entitles IQ.Lvbs LLC to
pursue all available legal remedies to protect its intellectual property and
trade secrets.
NO WARRANTY
THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT
HOLDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
NON-INFRINGEMENT.
LIMITATION OF LIABILITY
IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES, OR
OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE. THE USER ACCEPTS FULL
RESPONSIBILITY FOR ANY AND ALL LIABILITIES WHEN USING IQ.LVBS SOFTWARE.
TERMINATION
This license terminates automatically if you violate any of its terms. Upon
termination, you must destroy all copies of the Software in your possession.
The Copyright Holder reserves the right to revoke this license at any time
for any reason.
GOVERNING LAW
This license shall be governed by the laws of the State of Illinois, United
States of America. Any disputes arising under this license shall be subject
to the exclusive jurisdiction of the courts located in The State of Illinois, United States.
---
For commercial licensing inquiries, contact: support@iqlvbs.com
-98
View File
@@ -1,98 +0,0 @@
IQ.Lvbs License v0.1a
Copyright (c) 2026 IQ.Lvbs LLC, a part of Project Teal Lvbs Inc. All Rights Reserved.
DEFINITIONS
"Software" refers to IQ.Pilot, konn3kt, and all associated source code,
documentation, and assets owned by the Copyright Holder.
"Open Components" refers to portions of the Software explicitly marked as
open source.
"Proprietary Components" refers to all portions of the Software not made
available to the public in source form.
"Copyright Holder" refers to IQ.Lvbs LLC, a part of Project Teal Lvbs Inc.
GRANT OF LICENSE
Subject to the terms of this license, you are granted a limited,
non-exclusive, revocable license to:
1. View, study, and learn from the Open Components
2. Modify the Open Components for personal, internal, or open-source public use
3. Run the Software for personal, non-commercial purposes
RESTRICTIONS
You may NOT:
1. Claim ownership of any part of the Software, excluding your own
modifications that do not incorporate Proprietary Components.
2. Reverse engineer, decompile, disassemble, or in any way attempt to
circumvent the obfuscation of the Proprietary Components.
3. Use the Software or any derivative for commercial purposes without
explicit written permission from the Copyright Holder.
4. Remove or alter any copyright notices or this license.
5. Sublicense, sell, or transfer rights to the Software.
6. Use the Software and/or its source code to compete with or create a
substantially similar product.
7. Use the Software in closed source software not licensed by IQ.Lvbs LLC.
CONSEQUENCES OF VIOLATION
In the event any Restriction is violated, any product created using inspiration from, or source code from, IQ.Pilot or Konn3kt shall be subject to a licensing fee determined solely by the Copyright Holder. Additionally, the violating party hereby grants IQ.Lvbs LLC an exclusive, irrevocable, worldwide, royalty-free license to use any and all assets from the infringing product on IQ.Lvbs webpages, advertising materials, and in any other manner IQ.Lvbs sees fit.
OWNERSHIP
All rights, title, and interest in the Software remain exclusively with the
Copyright Holder. Any modifications, improvements, or derivative works you
create based on the Software are owned by the Copyright Holder. By
contributing modifications, you irrevocably assign all rights to the
Copyright Holder.
PROPRIETARY COMPONENTS
The Proprietary Components are provided in binary or obfuscated form only.
Reverse engineering, decompilation, or disassembly of Proprietary Components
is strictly prohibited. Violation of this provision entitles IQ.Lvbs LLC to
pursue all available legal remedies to protect its intellectual property and
trade secrets.
NO WARRANTY
THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT
HOLDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
NON-INFRINGEMENT.
LIMITATION OF LIABILITY
IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES, OR
OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE. THE USER ACCEPTS FULL
RESPONSIBILITY FOR ANY AND ALL LIABILITIES WHEN USING IQ.LVBS SOFTWARE.
TERMINATION
This license terminates automatically if you violate any of its terms. Upon
termination, you must destroy all copies of the Software in your possession.
The Copyright Holder reserves the right to revoke this license at any time
for any reason.
GOVERNING LAW
This license shall be governed by the laws of the State of Illinois, United
States of America. Any disputes arising under this license shall be subject
to the exclusive jurisdiction of the courts located in Henry County, Illinois.
---
For commercial licensing inquiries, contact: support@iqlvbs.com
+93 -42
View File
@@ -1,56 +1,107 @@
# IQ.Pilot: <div align="center" style="text-align: center;">
<h1>openpilot</h1>
<p>
<b>openpilot is an operating system for robotics.</b>
<br>
Currently, it upgrades the driver assistance system in 300+ supported cars.
</p>
<h3>
<a href="https://docs.comma.ai">Docs</a>
<span> · </span>
<a href="https://docs.comma.ai/contributing/roadmap/">Roadmap</a>
<span> · </span>
<a href="https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md">Contribute</a>
<span> · </span>
<a href="https://discord.comma.ai">Community</a>
<span> · </span>
<a href="https://comma.ai/shop">Try it on a comma 3X</a>
</h3>
Quick start: `bash <(curl -fsSL openpilot.comma.ai)`
[![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml/badge.svg)](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![X Follow](https://img.shields.io/twitter/follow/comma_ai)](https://x.com/comma_ai)
[![Discord](https://img.shields.io/discord/469524606043160576)](https://discord.comma.ai)
</div>
<table>
<tr>
<td><a href="https://youtu.be/NmBfgOanCyk" title="Video By Greer Viau"><img src="https://github.com/commaai/openpilot/assets/8762862/2f7112ae-f748-4f39-b617-fabd689c3772"></a></td>
<td><a href="https://youtu.be/VHKyqZ7t8Gw" title="Video By Logan LeGrand"><img src="https://github.com/commaai/openpilot/assets/8762862/92351544-2833-40d7-9e0b-7ef7ae37ec4c"></a></td>
<td><a href="https://youtu.be/SUIZYzxtMQs" title="A drive to Taco Bell"><img src="https://github.com/commaai/openpilot/assets/8762862/05ceefc5-2628-439c-a9b2-89ce77dc6f63"></a></td>
</tr>
</table>
Using openpilot in a car
------
## Join Our Public Beta at: https://discord.iqlvbs.com To use openpilot in a car, you need four things:
1. **Supported Device:** a comma 3/3X, available at [comma.ai/shop](https://comma.ai/shop/comma-3x).
2. **Software:** The setup procedure for the comma 3/3X allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version.
3. **Supported Car:** Ensure that you have one of [the 275+ supported cars](docs/CARS.md).
4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma 3/3X to your car.
## Running IQ.Pilot We have detailed instructions for [how to install the harness and device in a car](https://comma.ai/setup). Note that it's possible to run openpilot on [other hardware](https://blog.comma.ai/self-driving-car-for-free/), although it's not plug-and-play.
* A modern comma device to run this software (3, 3x, 4)
* One of [the supported cars](https://gitlvb.teallvbs.xyz/IQ.Lvbs/IQ.Pilot/src/branch/release/opendbc_repo/docs/CARS.md).
* A [car harness](https://comma.ai/shop/products/car-harness) to connect to your car
#### Side Note: Volkswagen Group, and Tesla vehicles are the ONLY fully supported vehicles for use with IQ.Pilot, other manufacturers are supported but not a top priority while we are in beta.
## Installation
#### Installing Via Installer URL:
#### Enter the following into your comma device custom URL box to install IQ.Pilot:
`IQ-Lvbs/release`
#### Having Trouble? If your device is currently running AGNOS 13.1 or older, you should install latest stock, then install IQ.Pilot, or try one of the alternative methods listed below!
### Branches
| branch | URL | description |
|------------------|----------------------------------------|-------------------------------------------------------------------------------------|
| `release3` | openpilot.comma.ai | This is openpilot's release branch. |
| `release3-staging` | openpilot-test.comma.ai | This is the staging branch for releases. Use it to get new releases slightly early. |
| `nightly` | openpilot-nightly.comma.ai | This is the bleeding edge development branch. Do not expect this to be stable. |
| `nightly-dev` | installer.comma.ai/commaai/nightly-dev | Same as nightly, but includes experimental development features for some cars. |
## Alternative Methods of Installation: To start developing openpilot
#### Enabling SSH: ------
* In your comma device's settings, go into "Developer Settings"
* Enable the "Enable SSH" toggle if it is not already on.
* Next to "SSH Keys", click on "Add" and then enter your GitHub username.
* Run the command below (replace your_email@example.com with your GitHub account email, then paste the output [here](https://github.com/settings/keys) after clicking on "New SSH Key", then reboot your comma device.
#### SSH Key Command: `ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519 -N "" && cat ~/.ssh/id_ed25519.pub`
#### Side Note: If you have already setup SSH and can SSH into your comma device, skip this section.
#### Installing Via SSH: openpilot is developed by [comma](https://comma.ai/) and by users like you. We welcome both pull requests and issues on [GitHub](http://github.com/commaai/openpilot).
#### Once you are connected to your device via SSH, you can paste the following command below to install IQ.Pilot:
`cd .. && git clone https://gitlvb.teallvbs.xyz/IQ.Lvbs/IQ.Pilot.git && mv IQ.Pilot openpilot && cd openpilot && git submodule update --init && sudo reboot`
#### If you'd like to backup your previous installation as well, paste the following command below to install IQ.Pilot:
`cd .. && mv openpilot openpilot_backup_X && git clone https://gitlvb.teallvbs.xyz/IQ.Lvbs/IQ.Pilot.git && mv IQ.Pilot openpilot && cd openpilot && git submodule update --init && sudo reboot`
#### Alternatively, you can use your existing fork's built in tools to switch your branch as well:
`git remote add iqpilot https://gitlvb.teallvbs.xyz/IQ.Lvbs/IQ.Pilot.git && op switch iqpilot release`
## Releases: * Join the [community Discord](https://discord.comma.ai)
#### IQ.Pilot's Beta Is Currently At Release 1.0b * Check out [the contributing docs](docs/CONTRIBUTING.md)
| Version | Installation URL | * Check out the [openpilot tools](tools/)
|:---------:|:-----------------:| * Code documentation lives at https://docs.comma.ai
| `release` | `IQ-Lvbs/release` | * Information about running openpilot lives on the [community wiki](https://github.com/commaai/openpilot/wiki)
## 📊 User Data Want to get paid to work on openpilot? [comma is hiring](https://comma.ai/jobs#open-positions) and offers lots of [bounties](https://comma.ai/bounties) for external contributors.
### IQ.Pilot uploads your data to Konn3kt, by IQ.Lvbs.
#### Konn3kt is a secure, encrypted, feature rich management experience for your IQ.Pilot device. Konn3kt has dual end-to-end encryption, your data is encrypted in transit, and at rest, you, and only you have access to your device, and your data.
#### IQ.Pilot allows users to disable uploading entirely if they wish. Safety and Testing
#### Konn3kt doesn't collect driver camera, microphone data, and parses your logs with dual end-to-end encryption, ensuring that your data is accessible to you, and only you, not even accessible to IQ.Lvbs. ----
## Terms of Service / Privacy Policy / Licensing * openpilot observes [ISO26262](https://en.wikipedia.org/wiki/ISO_26262) guidelines, see [SAFETY.md](docs/SAFETY.md) for more details.
#### IQ.Pilot is subject to the License found in this repository, [Terms of Service](https://konn3kt.com/tos), and, [Privacy Policy](https://konn3kt.com/privacy). * openpilot has software-in-the-loop [tests](.github/workflows/selfdrive_tests.yaml) that run on every commit.
* The code enforcing the safety model lives in panda and is written in C, see [code rigor](https://github.com/commaai/panda#code-rigor) for more details.
* panda has software-in-the-loop [safety tests](https://github.com/commaai/panda/tree/master/tests/safety).
* Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.
* panda has additional hardware-in-the-loop [tests](https://github.com/commaai/panda/blob/master/Jenkinsfile).
* We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.
<details>
<summary>MIT Licensed</summary>
## Support IQ.Pilot? openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.
Sorry, I have better things to do than ask my users for donations. - Teal
<span>-</span> IQ.Lvbs, by Project Teal Lvbs Any user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys fees and costs) which arise out of, relate to or result from any use of this software by user.
**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT.
YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS.
NO WARRANTY EXPRESSED OR IMPLIED.**
</details>
<details>
<summary>User Data and comma Account</summary>
By default, openpilot uploads the driving data to our servers. You can also access your data through [comma connect](https://connect.comma.ai/). We use your data to train better models and improve openpilot for everyone.
openpilot is open source software: the user is free to disable data collection if they wish to do so.
openpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.
The driver-facing camera and microphone are only logged if you explicitly opt-in in settings.
By using openpilot, you agree to [our Privacy Policy](https://comma.ai/privacy). You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.
</details>
+1075 -4
View File
File diff suppressed because it is too large Load Diff
+234 -99
View File
@@ -3,51 +3,157 @@ import subprocess
import sys import sys
import sysconfig import sysconfig
import platform import platform
import shlex
import numpy as np import numpy as np
import SCons.Errors import SCons.Errors
SCons.Warnings.warningAsException(True) SCons.Warnings.warningAsException(True)
# pending upstream fix - https://github.com/SCons/scons/issues/4461
#SetOption('warn', 'all')
TICI = os.path.isfile('/TICI')
AGNOS = TICI
Decider('MD5-timestamp') Decider('MD5-timestamp')
SetOption('num_jobs', max(1, int(os.cpu_count()/2))) SetOption('num_jobs', max(1, int(os.cpu_count()/2)))
AddOption('--asan', action='store_true', help='turn on ASAN') AddOption('--kaitai',
AddOption('--ubsan', action='store_true', help='turn on UBSan') action='store_true',
AddOption('--mutation', action='store_true', help='generate mutation-ready code') help='Regenerate kaitai struct parsers')
AddOption('--ccflags', action='store', type='string', default='', help='pass arbitrary flags over the command line')
AddOption('--asan',
action='store_true',
help='turn on ASAN')
AddOption('--ubsan',
action='store_true',
help='turn on UBSan')
AddOption('--coverage',
action='store_true',
help='build with test coverage options')
AddOption('--clazy',
action='store_true',
help='build with clazy')
AddOption('--ccflags',
action='store',
type='string',
default='',
help='pass arbitrary flags over the command line')
AddOption('--external-sconscript',
action='store',
metavar='FILE',
dest='external_sconscript',
help='add an external SConscript to the build')
AddOption('--mutation',
action='store_true',
help='generate mutation-ready code')
AddOption('--minimal', AddOption('--minimal',
action='store_false', action='store_false',
dest='extras', dest='extras',
default=os.path.exists(File('#.gitattributes').abspath), # minimal by default on release branch (where there's no LFS) default=os.path.exists(File('#.lfsconfig').abspath), # minimal by default on release branch (where there's no LFS)
help='the minimum build to run openpilot. no tests, tools, etc.') help='the minimum build to run openpilot. no tests, tools, etc.')
# Detect platform ## Architecture name breakdown (arch)
arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip() ## - larch64: linux tici aarch64
## - aarch64: linux pc aarch64
## - x86_64: linux pc x64
## - Darwin: mac x64 or arm64
real_arch = arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
if platform.system() == "Darwin": if platform.system() == "Darwin":
arch = "Darwin" arch = "Darwin"
brew_prefix = subprocess.check_output(['brew', '--prefix'], encoding='utf8').strip() brew_prefix = subprocess.check_output(['brew', '--prefix'], encoding='utf8').strip()
elif arch == "aarch64" and os.path.isfile('/TICI'): elif arch == "aarch64" and AGNOS:
arch = "larch64" arch = "larch64"
assert arch in [ assert arch in ["larch64", "aarch64", "x86_64", "Darwin"]
"larch64", # linux tici arm64
"aarch64", # linux pc arm64 lenv = {
"x86_64", # linux pc x64 "PATH": os.environ['PATH'],
"Darwin", # macOS arm64 (x86 not supported) "PYTHONPATH": Dir("#").abspath + ':' + Dir(f"#third_party/acados").abspath,
]
"ACADOS_SOURCE_DIR": Dir("#third_party/acados").abspath,
"ACADOS_PYTHON_INTERFACE_PATH": Dir("#third_party/acados/acados_template").abspath,
"TERA_PATH": Dir("#").abspath + f"/third_party/acados/{arch}/t_renderer"
}
rpath = []
if arch == "larch64":
cpppath = [
"#third_party/opencl/include",
]
libpath = [
"/usr/local/lib",
"/system/vendor/lib64",
f"#third_party/acados/{arch}/lib",
]
libpath += [
"#third_party/libyuv/larch64/lib",
"/usr/lib/aarch64-linux-gnu"
]
cflags = ["-DQCOM2", "-mcpu=cortex-a57"]
cxxflags = ["-DQCOM2", "-mcpu=cortex-a57"]
rpath += ["/usr/local/lib"]
else:
cflags = []
cxxflags = []
cpppath = []
rpath += []
# MacOS
if arch == "Darwin":
libpath = [
f"#third_party/libyuv/{arch}/lib",
f"#third_party/acados/{arch}/lib",
f"{brew_prefix}/lib",
f"{brew_prefix}/opt/openssl@3.0/lib",
"/System/Library/Frameworks/OpenGL.framework/Libraries",
]
cflags += ["-DGL_SILENCE_DEPRECATION"]
cxxflags += ["-DGL_SILENCE_DEPRECATION"]
cpppath += [
f"{brew_prefix}/include",
f"{brew_prefix}/opt/openssl@3.0/include",
]
# Linux
else:
libpath = [
f"#third_party/acados/{arch}/lib",
f"#third_party/libyuv/{arch}/lib",
"/usr/lib",
"/usr/local/lib",
]
if GetOption('asan'):
ccflags = ["-fsanitize=address", "-fno-omit-frame-pointer"]
ldflags = ["-fsanitize=address"]
elif GetOption('ubsan'):
ccflags = ["-fsanitize=undefined"]
ldflags = ["-fsanitize=undefined"]
else:
ccflags = []
ldflags = []
# no --as-needed on mac linker
if arch != "Darwin":
ldflags += ["-Wl,--as-needed", "-Wl,--no-undefined"]
ccflags_option = GetOption('ccflags')
if ccflags_option:
ccflags += ccflags_option.split(' ')
env = Environment( env = Environment(
ENV={ ENV=lenv,
"PATH": os.environ['PATH'],
"PYTHONPATH": Dir("#").abspath + ':' + Dir(f"#third_party/acados").abspath,
"ACADOS_SOURCE_DIR": Dir("#third_party/acados").abspath,
"ACADOS_PYTHON_INTERFACE_PATH": Dir("#third_party/acados/acados_template").abspath,
"TERA_PATH": Dir("#").abspath + f"/third_party/acados/{arch}/t_renderer"
},
CC='clang',
CXX='clang++',
CCFLAGS=[ CCFLAGS=[
"-g", "-g",
"-fPIC", "-fPIC",
@@ -60,31 +166,36 @@ env = Environment(
"-Wno-c99-designator", "-Wno-c99-designator",
"-Wno-reorder-init-list", "-Wno-reorder-init-list",
"-Wno-vla-cxx-extension", "-Wno-vla-cxx-extension",
], ] + cflags + ccflags,
CFLAGS=["-std=gnu11"],
CXXFLAGS=["-std=c++1z"], CPPPATH=cpppath + [
CPPPATH=[
"#", "#",
"#msgq",
"#third_party",
"#third_party/json11",
"#third_party/linux/include",
"#third_party/acados/include", "#third_party/acados/include",
"#third_party/acados/include/blasfeo/include", "#third_party/acados/include/blasfeo/include",
"#third_party/acados/include/hpipm/include", "#third_party/acados/include/hpipm/include",
"#third_party/catch2/include", "#third_party/catch2/include",
"#third_party/libyuv/include", "#third_party/libyuv/include",
"#third_party/json11",
"#third_party/linux/include",
"#third_party",
"#msgq",
], ],
LIBPATH=[
"#common", CC='clang',
CXX='clang++',
LINKFLAGS=ldflags,
RPATH=rpath,
CFLAGS=["-std=gnu11"] + cflags,
CXXFLAGS=["-std=c++1z"] + cxxflags,
LIBPATH=libpath + [
"#msgq_repo", "#msgq_repo",
"#third_party", "#third_party",
"#selfdrive/pandad", "#selfdrive/pandad",
"#common",
"#rednose/helpers", "#rednose/helpers",
f"#third_party/libyuv/{arch}/lib",
f"#third_party/acados/{arch}/lib",
], ],
RPATH=[],
CYTHONCFILESUFFIX=".cpp", CYTHONCFILESUFFIX=".cpp",
COMPILATIONDB_USE_ABSPATH=True, COMPILATIONDB_USE_ABSPATH=True,
REDNOSE_ROOT="#", REDNOSE_ROOT="#",
@@ -92,66 +203,29 @@ env = Environment(
toolpath=["#site_scons/site_tools", "#rednose_repo/site_scons/site_tools"], toolpath=["#site_scons/site_tools", "#rednose_repo/site_scons/site_tools"],
) )
# Arch-specific flags and paths if arch == "Darwin":
if arch == "larch64": # RPATH is not supported on macOS, instead use the linker flags
env.Append(CPPPATH=[ darwin_rpath_link_flags = [f"-Wl,-rpath,{path}" for path in env["RPATH"]]
"#third_party/opencl/include", env["LINKFLAGS"] += darwin_rpath_link_flags
"/usr/include/aarch64-linux-gnu",
])
env.Append(LIBPATH=[
"/usr/local/lib",
"/usr/lib/aarch64-linux-gnu",
"/system/vendor/lib64",
])
arch_flags = ["-D__TICI__", "-mcpu=cortex-a57", "-DQCOM2"]
env.Append(CCFLAGS=arch_flags)
env.Append(CXXFLAGS=arch_flags)
elif arch == "Darwin":
env.Append(LIBPATH=[
f"{brew_prefix}/lib",
f"{brew_prefix}/opt/openssl@3.0/lib",
f"{brew_prefix}/opt/llvm/lib/c++",
"/System/Library/Frameworks/OpenGL.framework/Libraries",
])
env.Append(CCFLAGS=["-DGL_SILENCE_DEPRECATION"])
env.Append(CXXFLAGS=["-DGL_SILENCE_DEPRECATION"])
env.Append(CPPPATH=[
f"{brew_prefix}/include",
f"{brew_prefix}/opt/openssl@3.0/include",
])
else:
env.Append(LIBPATH=[
"/usr/lib",
"/usr/local/lib",
])
# Sanitizers and extra CCFLAGS from CLI env.CompilationDatabase('compile_commands.json')
if GetOption('asan'):
env.Append(CCFLAGS=["-fsanitize=address", "-fno-omit-frame-pointer"])
env.Append(LINKFLAGS=["-fsanitize=address"])
elif GetOption('ubsan'):
env.Append(CCFLAGS=["-fsanitize=undefined"])
env.Append(LINKFLAGS=["-fsanitize=undefined"])
_extra_cc = shlex.split(GetOption('ccflags') or '') # Setup cache dir
if _extra_cc: cache_dir = '/data/scons_cache' if AGNOS else '/tmp/scons_cache'
env.Append(CCFLAGS=_extra_cc) CacheDir(cache_dir)
Clean(["."], cache_dir)
# no --as-needed on mac linker
if arch != "Darwin":
env.Append(LINKFLAGS=["-Wl,--as-needed", "-Wl,--no-undefined"])
# progress output
node_interval = 5 node_interval = 5
node_count = 0 node_count = 0
def progress_function(node): def progress_function(node):
global node_count global node_count
node_count += node_interval node_count += node_interval
sys.stderr.write("progress: %d\n" % node_count) sys.stderr.write("progress: %d\n" % node_count)
if os.environ.get('SCONS_PROGRESS'): if os.environ.get('SCONS_PROGRESS'):
Progress(progress_function, interval=node_interval) Progress(progress_function, interval=node_interval)
# ********** Cython build environment ********** # Cython build environment
py_include = sysconfig.get_paths()['include'] py_include = sysconfig.get_paths()['include']
envCython = env.Clone() envCython = env.Clone()
envCython["CPPPATH"] += [py_include, np.get_include()] envCython["CPPPATH"] += [py_include, np.get_include()]
@@ -160,28 +234,84 @@ envCython["CCFLAGS"].remove("-Werror")
envCython["LIBS"] = [] envCython["LIBS"] = []
if arch == "Darwin": if arch == "Darwin":
envCython["LINKFLAGS"] = env["LINKFLAGS"] + ["-bundle", "-undefined", "dynamic_lookup"] envCython["LINKFLAGS"] = ["-bundle", "-undefined", "dynamic_lookup"] + darwin_rpath_link_flags
else: else:
envCython["LINKFLAGS"] = ["-pthread", "-shared"] envCython["LINKFLAGS"] = ["-pthread", "-shared"]
np_version = SCons.Script.Value(np.__version__) np_version = SCons.Script.Value(np.__version__)
Export('envCython', 'np_version') Export('envCython', 'np_version')
Export('env', 'arch') # Qt build environment
qt_env = env.Clone()
qt_modules = ["Widgets", "Gui", "Core", "Network", "Concurrent", "DBus", "Xml"]
# Setup cache dir qt_libs = []
default_cache_dir = '/data/scons_cache' if arch == "larch64" else '/tmp/scons_cache' if arch == "Darwin":
cache_dir = ARGUMENTS.get('cache_dir', default_cache_dir) qt_env['QTDIR'] = f"{brew_prefix}/opt/qt@5"
CacheDir(cache_dir) qt_dirs = [
Clean(["."], cache_dir) os.path.join(qt_env['QTDIR'], "include"),
]
qt_dirs += [f"{qt_env['QTDIR']}/include/Qt{m}" for m in qt_modules]
qt_env["LINKFLAGS"] += ["-F" + os.path.join(qt_env['QTDIR'], "lib")]
qt_env["FRAMEWORKS"] += [f"Qt{m}" for m in qt_modules] + ["OpenGL"]
qt_env.AppendENVPath('PATH', os.path.join(qt_env['QTDIR'], "bin"))
else:
qt_install_prefix = subprocess.check_output(['qmake', '-query', 'QT_INSTALL_PREFIX'], encoding='utf8').strip()
qt_install_headers = subprocess.check_output(['qmake', '-query', 'QT_INSTALL_HEADERS'], encoding='utf8').strip()
# ********** start building stuff ********** qt_env['QTDIR'] = qt_install_prefix
qt_dirs = [
f"{qt_install_headers}",
]
qt_gui_path = os.path.join(qt_install_headers, "QtGui")
qt_gui_dirs = [d for d in os.listdir(qt_gui_path) if os.path.isdir(os.path.join(qt_gui_path, d))]
qt_dirs += [f"{qt_install_headers}/QtGui/{qt_gui_dirs[0]}/QtGui", ] if qt_gui_dirs else []
qt_dirs += [f"{qt_install_headers}/Qt{m}" for m in qt_modules]
qt_libs = [f"Qt5{m}" for m in qt_modules]
if arch == "larch64":
qt_libs += ["GLESv2", "wayland-client"]
qt_env.PrependENVPath('PATH', Dir("#third_party/qt5/larch64/bin/").abspath)
elif arch != "Darwin":
qt_libs += ["GL"]
qt_env['QT3DIR'] = qt_env['QTDIR']
qt_env.Tool('qt3')
qt_env['CPPPATH'] += qt_dirs + ["#third_party/qrcode"]
qt_flags = [
"-D_REENTRANT",
"-DQT_NO_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_GUI_LIB",
"-DQT_CORE_LIB",
"-DQT_MESSAGELOGCONTEXT",
]
qt_env['CXXFLAGS'] += qt_flags
qt_env['LIBPATH'] += ['#selfdrive/ui', ]
qt_env['LIBS'] = qt_libs
if GetOption("clazy"):
checks = [
"level0",
"level1",
"no-range-loop",
"no-non-pod-global-static",
]
qt_env['CXX'] = 'clazy'
qt_env['ENV']['CLAZY_IGNORE_DIRS'] = qt_dirs[0]
qt_env['ENV']['CLAZY_CHECKS'] = ','.join(checks)
Export('env', 'qt_env', 'arch', 'real_arch')
# Build common module # Build common module
SConscript(['common/SConscript']) SConscript(['common/SConscript'])
Import('_common') Import('_common', '_gpucommon')
common = [_common, 'json11', 'zmq'] common = [_common, 'json11', 'zmq']
Export('common') gpucommon = [_gpucommon]
Export('common', 'gpucommon')
# Build messaging (cereal + msgq + socketmaster + their dependencies) # Build messaging (cereal + msgq + socketmaster + their dependencies)
# Enable swaglog include in submodules # Enable swaglog include in submodules
@@ -205,8 +335,14 @@ SConscript(['rednose/SConscript'])
# Build system services # Build system services
SConscript([ SConscript([
'system/ubloxd/SConscript',
'system/loggerd/SConscript', 'system/loggerd/SConscript',
]) ])
if arch != "Darwin":
SConscript([
'system/logcatd/SConscript',
'system/proclogd/SConscript',
])
if arch == "larch64": if arch == "larch64":
SConscript(['system/camerad/SConscript']) SConscript(['system/camerad/SConscript'])
@@ -216,12 +352,11 @@ SConscript(['third_party/SConscript'])
SConscript(['selfdrive/SConscript']) SConscript(['selfdrive/SConscript'])
SConscript(['iqpilot/SConscript'])
if Dir('#tools/cabana/').exists() and GetOption('extras'): if Dir('#tools/cabana/').exists() and GetOption('extras'):
SConscript(['tools/replay/SConscript']) SConscript(['tools/replay/SConscript'])
if arch != "larch64": if arch != "larch64":
SConscript(['tools/cabana/SConscript']) SConscript(['tools/cabana/SConscript'])
external_sconscript = GetOption('external_sconscript')
env.CompilationDatabase('compile_commands.json') if external_sconscript:
SConscript([external_sconscript])
+1 -48
View File
@@ -1,52 +1,5 @@
# Security Policy # Security Policy
## Supported Versions
| Component | Version | Supported |
| --------- | ------- | --------- |
| IQ.Pilot | latest | TRUE |
| konn3kt | latest | TRUE |
## Scope
This security policy covers the following components, but applies to all IQ.Lvbs software:
- **IQ.Pilot**
- **konn3kt**
## Reporting a Vulnerability ## Reporting a Vulnerability
If you discover a security vulnerability in IQ.Pilot or konn3kt, please report it responsibly, abuse is against the terms of service for IQ.Lvbs software. Suspected vulnerabilities can be reported to both `adeeb@comma.ai` and `security@comma.ai`.
**Email:** security@iqlvbs.com
Please include:
- A description of the vulnerability and its impact, and potential impact
- Steps to reproduce the issue
- Affected component(s)
- Any relevant logs, screenshots, or proof of concept code that can assist with reproduction.
## Response Timeline
- **Acknowledgment:** Within 168 hours of receipt
- **Initial Assessment:** Within 1-14 days
- **Resolution Target:** Depends on severity; critical issues are prioritized immediately
## Responsible Disclosure
We ask that you:
- Allow reasonable time for us to investigate and address the issue.
- Avoid accessing or modifying other users' data, this is against IQ.Lvbs policy, and illegal in many jurisdictions.
- Do not exploit vulnerabilities beyond what is necessary to demonstrate the issue.
## Out of Scope
- Issues in third-party dependencies unless the vulnerability is triggered by our specific usage
## Recognition
We appreciate and recognize security researchers who help keep IQ.Lvbs software safe. With your permission, we will credit you in our release notes when a reported vulnerability is fixed.
- IQ.Lvbs, a part of Project Teal Lvbs Inc ©️
@@ -1,22 +0,0 @@
{
"python/iqpilot_private/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/iqlvbs/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/iqlvbs/alc.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "6bae6589e721bde2ef70304536762360105b64073a096392c78fe87258c797a5",
"size": 268992
}
}
@@ -1,52 +0,0 @@
{
"python/iqpilot_private/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/hephaestus/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/konn3kt/hephaestus/_vendor/localapi_runtime.zip": {
"mode": 420,
"sha256": "4018cd4f876e877474df93cc2b58932284b9c0d5d5f7001f74c7f2465a505747",
"size": 2146290
},
"python/iqpilot_private/konn3kt/hephaestus/ble_auth.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "f77016d1340c10db931aa6157b9ceeea32bd6709b5933081ac21a08f17bdef9f",
"size": 268160
},
"python/iqpilot_private/konn3kt/hephaestus/ble_gatt.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "07c5b9866ccbe843a5d84841257d4c682756fc197e0b478e739fda9ef523f094",
"size": 405696
},
"python/iqpilot_private/konn3kt/hephaestus/ble_rpc_dispatch.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "f5ac4aa7685a1bd846062a5d93e4d2bac66f84a7f677dcc6a6cb5169652bc602",
"size": 68352
},
"python/iqpilot_private/konn3kt/hephaestus/ble_transportd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "a203aece5a353f78068ab8c1b4d5dd0f7fd1ea0e418d77d0064f1a667d905088",
"size": 334832
},
"python/iqpilot_private/konn3kt/hephaestus/hephaestusd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "5d4d44e1bdd281e396147aafec57d25b1e12142f014dd1f4f91f7bc6b4893507",
"size": 4845683
},
"python/iqpilot_private/konn3kt/hephaestus/manage_hephaestusd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "77765c968b5effe9099d18577b602acc205e556362b649407e51aa0842721214",
"size": 68104
}
}
@@ -1,37 +0,0 @@
{
"python/iqpilot_private/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/models/__init__.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "7888179fd64163ddcfa367653b8163a189ce8e40f5c2946d00b9b7195a6588b6",
"size": 67920
},
"python/iqpilot_private/models/__init__.py": {
"mode": 420,
"sha256": "5128931b54d4f1ff131185e7711d56a788b5e2cb71e3c8154a2f79fef184b452",
"size": 118
},
"python/iqpilot_private/models/fetcher.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "cd4758048976323f149a3853651acca8c8867e9596b23ad047fd0254a7e042d7",
"size": 136320
},
"python/iqpilot_private/models/git_auth.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "3b54389098393aaf6d6eafc68467f3f0bf1935d7469ce6f28ed1d11f5fbde6bc",
"size": 68168
},
"python/iqpilot_private/models/helpers.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "3bab3b2480d36b9d76de3811d4fad77b371b8403578548640038e925891d7678",
"size": 138744
},
"python/iqpilot_private/models/manager.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "1ef51a05e18e0d08d817cdc16733568b8b8743743a7e47c19ff98dfc2dab44ee",
"size": 205984
}
}
@@ -1,3 +0,0 @@
"""
Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos
"""
@@ -1,62 +0,0 @@
{
"python/iqpilot_private/__init__.py": {
"mode": 420,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"size": 0
},
"python/iqpilot_private/navd/__init__.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "74d23022b2af96d24b47270018cbae6accbb186e2eb557be4a2a5c16a1c194e4",
"size": 67920
},
"python/iqpilot_private/navd/__init__.py": {
"mode": 420,
"sha256": "3faeaa3363b2f50fa135ad4c1f2466853d684d562120425f77a58039837fd8fb",
"size": 69
},
"python/iqpilot_private/navd/event_builder.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "2a1738ce21ec8e4da1e8b9103fd3c030563f355f170078ceeee2e34241e3c145",
"size": 137160
},
"python/iqpilot_private/navd/gps_lane_tracker.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "e84d79d1f76edb06f4590fd77b1c472e2871915647d6d53fcd421215819abf18",
"size": 136008
},
"python/iqpilot_private/navd/helpers.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "a53d6a601f3bb2c80d012411823ce33fd9efbf21cfa668f8809643a5ee8725b7",
"size": 136360
},
"python/iqpilot_private/navd/iqmapd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "c4586ca8be4dd1fc386aa43a0c3a6ffabc18f9f7a78914394e3723c983ec39ec",
"size": 135720
},
"python/iqpilot_private/navd/navd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "0f6f60da6d9a5b808a5ed6924a85c53eab1e8c0f2ae6db6589e07fd6013176df",
"size": 664480
},
"python/iqpilot_private/navd/navrenderd.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "2dbad8b5521931e706e32da61c7521c6b5eb01df348f1ab96ff5838492cee117",
"size": 135768
},
"python/iqpilot_private/navd/route_manager.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "2819bce7387252a5d548b25e74a3637166b93f76e86bec11aca02b184febc1ab",
"size": 600208
},
"python/iqpilot_private/navd/runtime_common.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "e9cb16db508ecc159cfbe4769c506759918486a797504354487a81afea4f1608",
"size": 134400
},
"python/iqpilot_private/navd/web_server.cpython-312-aarch64-linux-gnu.so": {
"mode": 493,
"sha256": "8fa0c0307c2fc2bcb14af1e3e963bd9a420946ee8d11d4df104f611e5137e6c2",
"size": 201608
}
}
@@ -1,3 +0,0 @@
"""
Copyright ©️ Project Teal Lvbs Licensed Under MIT License
"""
@@ -1,234 +0,0 @@
{
"valhalla_runtime/bin/valhalla_service": {
"sha256": "6bef5c4ca7e1eb385ac1ae00d9ee20924a81a33f3e59c2b644d31430720d408d",
"size": 10754496
},
"valhalla_runtime/lib/libLerc.so.4": {
"sha256": "8148fbb2d121a08abf6ffe493a4994086eb43a785059871dbee1647ce115305b",
"size": 526288
},
"valhalla_runtime/lib/libbrotlicommon.so.1": {
"sha256": "016600f673a5d1a565cf98f608d8425033593ab78827eccc3384596f70386c8c",
"size": 198784
},
"valhalla_runtime/lib/libbrotlidec.so.1": {
"sha256": "b7895f0fd4ad47408cb01fcb959ae6792804c15512526166f9bf48358714d0b5",
"size": 67688
},
"valhalla_runtime/lib/libbsd.so.0": {
"sha256": "6c5348ee0e1777f13e148b7492fa311b6f65adb0dc21a001a67ebc18948e6b3e",
"size": 133944
},
"valhalla_runtime/lib/libcap.so.2": {
"sha256": "c2f7d3a8594ea3a24b8ffcea8f929e8fbd0d6c24256f8ece625f0be6a3d4e1f0",
"size": 67704
},
"valhalla_runtime/lib/libcom_err.so.2": {
"sha256": "6a9d07af8817ed06466027a77fc7f2e8972a4a0e68895738d9acdc35470f416e",
"size": 67432
},
"valhalla_runtime/lib/libcrypto.so.3": {
"sha256": "3d51e64ad7113b2ab863b9582866ad2b31e545d1fe9f197c634a65a8f2611786",
"size": 4597928
},
"valhalla_runtime/lib/libcurl-gnutls.so.4": {
"sha256": "d739419f4c0abc68119f407f24f3eca0283ad510ed022c90f5f7b0c2a04d249d",
"size": 732568
},
"valhalla_runtime/lib/libcurl.so.4": {
"sha256": "b9764fa500494d831b6b5766e9191d1946f1dcd76f2a011aee9707f0831f0828",
"size": 798104
},
"valhalla_runtime/lib/libczmq.so.4": {
"sha256": "5a066a2015cf9fd5fca00a82702802538c3500e5bc26123e60da433d421ef308",
"size": 526736
},
"valhalla_runtime/lib/libdeflate.so.0": {
"sha256": "fc8c2ebe21ec4eebfccabcd6618b216a1bcf9a55dfc38c5af26e3b0ab835f4eb",
"size": 67384
},
"valhalla_runtime/lib/libffi.so.8": {
"sha256": "9dd873a938c4d7df76912d01f6a28aa4aa73d583bd20485a0dbfe5aa9673a191",
"size": 67944
},
"valhalla_runtime/lib/libgcrypt.so.20": {
"sha256": "763eeb8f170de52b8bc7268eaf433f72f03c980c04511130229a338a0ee2bb06",
"size": 1000536
},
"valhalla_runtime/lib/libgeotiff.so.5": {
"sha256": "8777a15c365f87f0d20d177600bea9cf23633e04841914e5fba7245603bf59fa",
"size": 264144
},
"valhalla_runtime/lib/libgmp.so.10": {
"sha256": "39b6701812ed7135f28df49352b3f6664c7a9f56880a3fe50c1b87cd7681db9b",
"size": 526632
},
"valhalla_runtime/lib/libgnutls.so.30": {
"sha256": "6b12c4675dbf7fca76bd47228f22b19f4218bc8c72e2f8b5cb6de172dee14961",
"size": 2171912
},
"valhalla_runtime/lib/libgpg-error.so.0": {
"sha256": "ff2dccba4993ef97775b70c1ed1144f70dfe8581ee48c1eb25c76878c6cdfdf7",
"size": 198648
},
"valhalla_runtime/lib/libgssapi_krb5.so.2": {
"sha256": "35790a9f5a49b1368614a485cb6ba7cc54cb34560831da1bda657f2502641624",
"size": 334304
},
"valhalla_runtime/lib/libhogweed.so.6": {
"sha256": "0495ad11a2266d7300436d57859fc8ebceac79e5235a393c42ae91d6fc23ce84",
"size": 329656
},
"valhalla_runtime/lib/libidn2.so.0": {
"sha256": "34a2427db57d47458b460ab15a24e7de73b56fbc7b458af837556445f60ffb4e",
"size": 132968
},
"valhalla_runtime/lib/libjbig.so.0": {
"sha256": "edfa3b74da686481be974c3f514dbe8487ad8faf258b634ab4227d98b33cb888",
"size": 78448
},
"valhalla_runtime/lib/libjpeg.so.8": {
"sha256": "d45014b67ae6df2f15c8fb3e86d37b78375deede47ef73b7c61e8b6b28c8223f",
"size": 395264
},
"valhalla_runtime/lib/libk5crypto.so.3": {
"sha256": "35b10e68ef45885838026423e2ea0b4a9fc12fa804081f9806b95bc18512094f",
"size": 198920
},
"valhalla_runtime/lib/libkeyutils.so.1": {
"sha256": "a58e06275e8e2010be20f367b7f2263e56130c04cb83523f29ae94555705ea59",
"size": 67432
},
"valhalla_runtime/lib/libkrb5.so.3": {
"sha256": "b411523bb29d8aef30f208c91bcead2bd8b8a64067e891686e33fe6a00369663",
"size": 859904
},
"valhalla_runtime/lib/libkrb5support.so.0": {
"sha256": "05fe1c19d3717a12d3a6237daa8c71604237f30b723c0a9bc40b7b759a69f9a2",
"size": 68192
},
"valhalla_runtime/lib/liblber.so.2": {
"sha256": "92e756c779c3fa77c4e8ad1ef0d97ebc2eaeccb2f9829da521691c52df4129d5",
"size": 67792
},
"valhalla_runtime/lib/libldap.so.2": {
"sha256": "6d3332e01734a21c0b1b18e993d6117a31f8227d3859556397704f266e18e262",
"size": 396656
},
"valhalla_runtime/lib/liblz4.so.1": {
"sha256": "d1482a2f74152881d8b83708fedae7bca039f5608024f1178dc21a17df9887a7",
"size": 133136
},
"valhalla_runtime/lib/liblzma.so.5": {
"sha256": "cb4d37d810d354f1c3be46bd2897ba47c9f7388da7e6470a79e3accfa8e81f41",
"size": 198584
},
"valhalla_runtime/lib/libmd.so.0": {
"sha256": "30d117046ce9405745e0d0d4722cff121f532913180bbb9425b38d076319ac08",
"size": 67584
},
"valhalla_runtime/lib/libnettle.so.8": {
"sha256": "8fd8ed433f1b993fe8b8aa8d3fa5342955ab581dc5ce418381872cd3df3dbb11",
"size": 395272
},
"valhalla_runtime/lib/libnghttp2.so.14": {
"sha256": "943724df4606c5eaeb47b2371da22d08fa3870249cfe90c84cef8e57ed6d8db5",
"size": 198768
},
"valhalla_runtime/lib/libnorm.so.1": {
"sha256": "31ec03ead2addce2d5e017e641750bd9612a9250faac2b408b669de1182428b7",
"size": 395208
},
"valhalla_runtime/lib/libp11-kit.so.0": {
"sha256": "10a0b7558d6cac2d777cc39a673f85ada4bfc4be7d8a2f2516e00999154b68a4",
"size": 1889776
},
"valhalla_runtime/lib/libpgm-5.3.so.0": {
"sha256": "bd9cf5ac5a861376c67579b8b62357df29722242aa3b47c849ae1faec24e4e92",
"size": 330392
},
"valhalla_runtime/lib/libprime_server.so.0": {
"sha256": "e8a7afac9407ab2119bd1d4183037577dc19e87068a09bb7d0424895f07fa4f6",
"size": 6565856
},
"valhalla_runtime/lib/libproj.so.25": {
"sha256": "7db50e4d982d2535c39403f27596a53ac98f1bd5f9877d43f2bd828a023a732c",
"size": 3740296
},
"valhalla_runtime/lib/libprotobuf-lite.so.32": {
"sha256": "e87c7af5028f82824bbff41f892c7d6d1f9c844870890bc3621f338f280007b4",
"size": 854904
},
"valhalla_runtime/lib/libpsl.so.5": {
"sha256": "95bd0ee93925255421d4f2adc621ac26e451fae04f613c8edd368c288be43488",
"size": 132888
},
"valhalla_runtime/lib/libresolv.so.2": {
"sha256": "e79ba5df3dc6e7d1bc67b16a49f13337ba46bbb01be1c896f0bdfd8e91c8e9f7",
"size": 67720
},
"valhalla_runtime/lib/librtmp.so.1": {
"sha256": "0e449c6660fb3dc7e06c56034f41106e9cf48a3baf5d30c1e0b53a48276d0c51",
"size": 133928
},
"valhalla_runtime/lib/libsasl2.so.2": {
"sha256": "f936a889bcc2d8b5ac8b89e2b37e4359bbd87cbbe87bd2b2002358dfffe04cce",
"size": 133800
},
"valhalla_runtime/lib/libsharpyuv.so.0": {
"sha256": "aa4617020b4bc450ef4382ea93ab3d6bef6571433498794a9b88a5675d52fe6d",
"size": 67520
},
"valhalla_runtime/lib/libsodium.so.23": {
"sha256": "3b72f199720e9382acdc372a944fdee980dac2f7fe2e8f6b1eed38843bc6544f",
"size": 264384
},
"valhalla_runtime/lib/libsqlite3.so.0": {
"sha256": "43ba1659a6113bb4360f4a6da9e465bca6403d7d1f376015d5a57901ee5639b6",
"size": 1526192
},
"valhalla_runtime/lib/libssh.so.4": {
"sha256": "41b9c6f2b4ad8930bc089f8f8e3b483d2d8f0760f9a7aca721a207c1286e7bde",
"size": 466056
},
"valhalla_runtime/lib/libssl.so.3": {
"sha256": "f23c6de6c41fb0ecc159f1af052cae3b525de697fae242290e656a242e7bc25d",
"size": 737192
},
"valhalla_runtime/lib/libsystemd.so.0": {
"sha256": "f1db21e4bb449d1844ac033d7b6f2e3921e140f386370a4a32f9043ea1437b9e",
"size": 989464
},
"valhalla_runtime/lib/libtasn1.so.6": {
"sha256": "039d653f8fdfa01240882b0033aca6887e1e9e6dc39acbea51d658fa75437955",
"size": 133048
},
"valhalla_runtime/lib/libtiff.so.6": {
"sha256": "96c0ab894fc511a760a08d33e53083aa9fc95f7bdfd3c3bd81cfdbdf26b592db",
"size": 591816
},
"valhalla_runtime/lib/libunistring.so.5": {
"sha256": "639c4c15f94e960450b69475d7282e4760fd5895a6a4f4e85f44bb15b74e512c",
"size": 1771448
},
"valhalla_runtime/lib/libuuid.so.1": {
"sha256": "58d35ebee086e9f858cd3e597236f1d744e587a216330e3f1d5f1e9ad011c55c",
"size": 67576
},
"valhalla_runtime/lib/libwebp.so.7": {
"sha256": "d921459ab6508b3239218b0e4c2e44dbd2e702aeff4273190bf25d2036373930",
"size": 395616
},
"valhalla_runtime/lib/libz.so.1": {
"sha256": "170380b4e7ab28ec86eb090b48df90f84089392cb72fecd5067e5b7a4dc5239f",
"size": 133272
},
"valhalla_runtime/lib/libzmq.so.5": {
"sha256": "1d986e7d5a45493b6adce97808ec5307d6c625ea4921e074023481521c2af4d9",
"size": 659312
},
"valhalla_runtime/lib/libzstd.so.1": {
"sha256": "fe726238b170b83aa83bf1f8a79109b8b61b9eb45234304511d093bbe5f5fb20",
"size": 657432
}
}

Some files were not shown because too many files have changed in this diff Show More