Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ubuntu 24.04 #262

Merged
merged 44 commits into from
Aug 13, 2024
Merged

Ubuntu 24.04 #262

merged 44 commits into from
Aug 13, 2024

Conversation

andiradulescu
Copy link
Collaborator

@andiradulescu andiradulescu commented Jul 25, 2024

Part of commaai/openpilot#32386


Release Checklist

  • test_onroad passes
  • Wi-Fi: lists networks and connects
  • Modem: connects to cell network
  • Image sizes haven't increased (increased to 4.5G from 4.0G from merged master)
  • Sounds work
  • python is our python, not system version
  • Clean openpilot build: scons -c && scons -j8
  • Factory reset
    • from openpilot menu
    • tapping on boot
    • corrupt userdata
  • Color calibration
    • from /persist/comma/
    • directly from panel over sysfs
  • Clean setup: factory reset -> install openpilot -> openpilot works
  • AGNOS update works on warm boot
    • previous -> new
    • new -> previous

ABL

  • Fastboot USB enumeration
  • Boot time hasn't regressed (3.8s -> 3.7s)

XBL

  • Display init works in cold and hot temperatures
  • Boot time hasn't regressed (2.4s)

Setup

Networking

  • Continue button disabled when no connection
  • Forget/connect to wifi

Custom URL

  • (a) Not a real URL (e.g. comma, abc123, ...)
    • "Ensure the entered URL is valid"
    • Start over
    • Reboot device
  • (b) Website but not an installer URL (e.g. github.com, comma.ai, installer.comma.ai)
    • "No custom software found at this URL."
  • (c) Valid installer URL (e.g. openpilot.comma.ai)
    • Download successful (comma logo or installer appears)
    • /tmp/installer_url should contain the installer URL

andiradulescu and others added 3 commits April 30, 2024 10:26
* separate out qtwayland5 compilation

* ubuntu 22.04

* temp build system image

* remove bionic deps

* temp packages update

* update armhf packages

* back to libstdc++6

* replaced remove dqt5-default meta package with actual depss

* fix for build libqmi crashing with /usr/bin/env: 'python': No such file or directory

* mapbox-gl-native gcc11 fix

* openpilot_dependencies.sh change

* ubuntu-base 24.04 daily current

* apt install meson because PEP 668

* temp g++-11 for mapbox-gl-native

* bump capnproto to 1.0.2

* temp build only agnos-compiler-mapbox-gl-native

* Fixes for compiling mapbox-gl-native

* Fixes for compiling ffmpeg

* Build main system image again

* pyopencl from git since no 2023.1.5 release since inducer/pyopencl#705

* Try to fix checkinstall - no success

* apt capnproto & ffmpeg since can't figure out issue with checkinstall

* Commented removed services disable

* Ubuntu 24.04 currently has arm-none-eabi/12.2.1 but just use wildcard to go to first folder

* pyclean is missing ?!

* ubuntu-latest in tests workflow

* Updated README

* Reverted internal/package_ota.py changes

* rebuilt kernel

* poetry.lock update

* Simplified build_system pipeline

* headers for capnproto

* Fix typo

* Fix for checkinstall

* Reverted apt capnproto & ffmpeg

* Some cleaning in Dockerfile

* 24.04 libwayland-client

* libffi6:armhf deb file

* Updated qtwayland

* Revert "libffi6:armhf deb file"

This reverts commit bb9cb5d.

* libffi.so.6.0.4

* qt5-qmake qtbase5-dev qtbase5-dev-tools already in qt5-default

* Removed qtwayland old files

* checkinstall temp fix

* QStandardPaths: wrong permissions on runtime directory /var/tmp/weston, 0770 instead of 0700

* temp permissions fix makes loading build spinner show

* temp build optimization

* 24.04 new libs

* build kernel don't use tools on aarch64/arm64

* updated boot image and ko files

* cleaning

* switch to release 24.04

* wip - downgrade qt and libwayland

* polkitd-pkla package to support polkit *.pkla

* fixed issue with old qt needing libssl 1.1.1f

* remove /.dockerenv file

* more cleaning

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* bump version

* /lib64 is now UsrMerged

* latest pip poetry; poetry.lock update

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
@andiradulescu andiradulescu marked this pull request as ready for review July 26, 2024 13:13
@adeebshihadeh
Copy link
Contributor

Is this ready to be merged? If not, let's convert to draft.

@andiradulescu andiradulescu marked this pull request as draft July 29, 2024 07:04
@andiradulescu
Copy link
Collaborator Author

andiradulescu commented Jul 29, 2024

Converted back to draft. I was considering it ready for merging/testing, but noticed something else in between that I need to clean up.

Will you be testing this (testing closet, etc) from this branch or you intend to merge it first?

Everything works fine from TESTING, I will redo all tests again, before making it ready.

Will also post the release checklist here, as soon as I finish it and then make it ready for review.

@adeebshihadeh
Copy link
Contributor

I'll test before merging this.

@andiradulescu
Copy link
Collaborator Author

I pushed my two changes. I will re-do the release checklist tomorrow.

If you want to test it today, you can flash the latest build.

@andiradulescu
Copy link
Collaborator Author

test_onroad result
quectel cleanup done
proclogd is dead with 0
logmessaged is dead with 0
micd is dead with 0
child system.timed got SIGINT
timed is dead with 0
killing dmonitoringmodeld with SIGKILL
sending signal 9 to dmonitoringmodeld
dmonitoringmodeld is dead with -9
encoderd is dead with 0
loggerd is dead with 0
modeld is dead with 0
sensord is dead with 0
ui is dead with 0
soundd is dead with 0
locationd is dead with 0
pandad is dead with 0
calibrationd is dead with 0
torqued is dead with 0
controlsd is dead with 0
card is dead with 1
deleter is dead with 0
dmonitoringd is dead with 0
qcomgpsd is dead with 0
paramsd is dead with 0
plannerd is dead with 0
radard is dead with 1
hardwared is dead with 0
tombstoned is dead with 0
statsd is dead with 0
everything is dead
pid 320's current affinity list: 3
pid 320's new affinity list: 3
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.pid 320's current affinity list: 3
pid 320's new affinity list: 3
.pid 320's current affinity list: 3
pid 320's new affinity list: 3
.pid 320's current affinity list: 3
pid 320's new affinity list: 3

------------------------------------------------
-------------- UI Draw Timing ------------------
------------------------------------------------
min  1.56ms
max  8.37ms
std  0.69ms
mean 3.17ms
------------------------------------------------

.pid 320's current affinity list: 3
pid 320's new affinity list: 3
dict_keys(['systemd', 'systemd-journal', 'systemd-udevd', 'systemd-network', 'systemd-resolve', 'adsprpcd', 'python', 'sleep', 'cron', 'dbus-daemon', 'leprop-service', 'networkd-dispat', 'polkitd', 'tmux: server', 'launch_chffrplu', 'cnss_daemon', 'systemd-logind', 'tftp_server', 'rmt_storage', 'rsyslogd', 'logd', 'NetworkManager', 'cdsprpcd', 'init_mss', 'wpa_supplicant', 'ModemManager', 'pdmappersvc', 'agetty', 'chronyd', 'sshd', 'weston', 'weston-keyboard', 'weston-desktop-', 'qseecomd', 'qmi-proxy', '(sd-pam)', 'bash', 'pytest', 'tem.logmessaged', 'system.timed', 'ui', 'e.pandad.pandad', 'loggerd.deleter', 'dware.hardwared', 'stem.tombstoned', 'system.statsd', 'pandad', 'camerad', 'logcatd', 'proclogd', 'system.micd', 'onitoringmodeld', 'encoderd', 'loggerd', 'modeld', 'sensord', 'drive.ui.soundd', 'locationd', 'nd.calibrationd', 'cationd.torqued', 'trols.controlsd', 'fdrive.car.card', 'ng.dmonitoringd', 'omgpsd.qcomgpsd', 'cationd.paramsd', 'ntrols.plannerd', 'controls.radard', '(udev-worker)'])
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
------------------------------------------------
------------------ CPU Usage -------------------
------------------------------------------------
selfdrive.controls.controlsd         29.16% (32.00%)
selfdrive.car.card                   21.62% (22.00%)
loggerd                              13.28% (14.00%)
encoderd                             13.98% (17.00%)
camerad                              14.17% (14.50%)
locationd                             8.45% (11.00%)
selfdrive.controls.plannerd           7.59% (11.00%)
ui                                   16.83% (18.00%)
selfdrive.locationd.paramsd           7.19% ( 9.00%)
sensord                               7.17% ( 7.00%)
selfdrive.controls.radard             7.40% ( 7.00%)
modeld                               16.90% (13.00%)
selfdrive.modeld.dmonitoringmodeld    6.24% ( 8.00%)
system.hardware.hardwared             5.71% ( 3.87%)
selfdrive.locationd.calibrationd      2.41% ( 2.00%)
selfdrive.locationd.torqued           5.03% ( 5.00%)
selfdrive.ui.soundd                   2.76% ( 3.50%)
selfdrive.monitoring.dmonitoringd     4.86% ( 4.00%)
proclogd                              1.53% ( 1.54%)
system.logmessaged                    0.21% ( 0.20%)
system.tombstoned                     0.00% ( 0.00%)
logcatd                               0.17% ( 0.00%)
system.micd                           3.84% ( 5.00%)
system.timed                          1.74% ( 0.00%)
selfdrive.pandad.pandad               0.00% ( 0.00%)
system.statsd                         0.66% ( 0.40%)
system.loggerd.uploader               0.00% (???%) NO METRICS FOUND
system.loggerd.deleter                0.00% ( 0.10%)
pandad                               19.72% (19.00%)
system.qcomgpsd.qcomgpsd             -4.19% ( 1.00%) using less CPU than expected
------------------------------------------------
------------------------------------------------
Total allocated CPU usage is 244.10999999999999%, budget is 250.0%, 5.9% left
------------------------------------------------

Fpid 320's current affinity list: 3
pid 320's new affinity list: 3
Memory usage:  [54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54]
.pid 320's current affinity list: 3
pid 320's new affinity list: 3
.pid 320's current affinity list: 3
pid 320's new affinity list: 3

------------------------------------------------
-------------- ImgProc Timing ------------------
------------------------------------------------
execution time: min  0.00558s
execution time: max  0.03042s
execution time: mean 0.01100s
------------------------------------------------

.spid 320's current affinity list: 3
pid 320's new affinity list: 3

------------------------------------------------
-----------------  MPC Timing ------------------
------------------------------------------------
'longitudinalPlan' execution time: min  0.00056s
'longitudinalPlan' execution time: max  0.00082s
'longitudinalPlan' execution time: mean 0.00060s
------------------------------------------------

.pid 320's current affinity list: 3
pid 320's new affinity list: 3

------------------------------------------------
----------------- Model Timing -----------------
------------------------------------------------
'modelV2' execution time: min  0.02037s
'modelV2' execution time: max 0.04783s
'modelV2' execution time: mean 0.02263s
'driverStateV2' execution time: min  0.01875s
'driverStateV2' execution time: max 0.04787s
'driverStateV2' execution time: mean 0.02033s
------------------------------------------------

.pid 320's current affinity list: 3
pid 320's new affinity list: 3

------------------------------------------------
----------------- Service Timings --------------
------------------------------------------------

Not equal to tolerance rtol=2.5, atol=0
can - failed max/min timing check
Mismatched elements: 1 / 2 (50%)
Max absolute difference: 0.02647288
Max relative difference: 2.6472883
 x: array([0.036473, 0.000818])
 y: array(0.01)
can                                     : [10.00320974 36.472883    0.818147  ]
                                          3.6472882999999996 0.1117283050484163
pandaStates                             : [ 99.99594703 104.054731    96.322566  ]
                                          1.04054731 0.019944639136198154
peripheralState                         : [500.00690848 500.890979   499.374368  ]
                                          1.001781958 0.0004893385569102931
sendcan                                 : [10.00318127 28.754676    4.105214  ]
                                          2.8754676 0.11636937194017477
carState                                : [10.0031966 28.47979    3.978604 ]
                                          2.847979 0.1140067830743324
carControl                              : [10.00134936 24.362024    3.744967  ]
                                          2.4362024 0.13259003837033398
controlsState                           : [10.0013496 24.32062    3.729082 ]
                                          2.432062 0.13195062125221477
longitudinalPlan                        : [ 50.25098282 174.122113    25.140902  ]
                                          3.4824422599999996 0.1323027043061308
roadCameraState                         : [ 50.00390687 113.458813    10.084683  ]
                                          2.26917626 0.11654428198493683
driverCameraState                       : [ 49.9952492 113.784582    9.716103 ]
                                          2.27569164 0.10541672341654486

Not equal to tolerance rtol=2.5, atol=0
modelV2 - failed max/min timing check
Mismatched elements: 1 / 2 (50%)
Max absolute difference: 0.13523853
Max relative difference: 2.70477058
 x: array([0.185239, 0.024756])
 y: array(0.05)
modelV2                                 : [ 50.25079279 185.238529    24.755656  ]
                                          3.70477058 0.13792050468384418
driverStateV2                           : [50.00049591 98.765601   20.840123  ]
                                          1.9753120199999998 0.11444002333742469

Not equal to tolerance rtol=2.5, atol=0
liveLocationKalman - failed max/min timing check
Mismatched elements: 1 / 2 (50%)
Max absolute difference: 0.13521363
Max relative difference: 2.70427268
 x: array([0.185214, 0.025446])
 y: array(0.05)
liveLocationKalman                      : [ 50.25152297 185.213634    25.446152  ]
                                          3.7042726799999994 0.13569098093778728

Not equal to tolerance rtol=1.5, atol=0
wideRoadCameraState - failed max/min timing check
Mismatched elements: 1 / 2 (50%)
Max absolute difference: 0.12661546
Max relative difference: 2.53230918
 x: array([0.176615, 0.029081])
 y: array(0.05)
wideRoadCameraState                     : [ 50.16708895 176.615459    29.08081   ]
                                          3.53230918 0.12770312408616263
===================================================================
Fpid 320's current affinity list: 3
pid 320's new affinity list: 3
spid 320's current affinity list: 3
pid 320's new affinity list: 3
F

=========================================================================================================== FAILURES ============================================================================================================
___________________________________________________________________________________________________ TestOnroad.test_cpu_usage ___________________________________________________________________________________________________

self = <selfdrive.test.test_onroad.TestOnroad object at 0x7f9c18e3d0>
subtests = SubTests(ihook=<_pytest.config.compat.PathAwareHookProxy object at 0x7fb3459d50>, suspend_capture_ctx=<bound method Ca...suspended' _in_suspended=False> _capture_fixture=None>>, request=<SubRequest 'subtests' for <Function test_cpu_usage>>)

    def test_cpu_usage(self, subtests):
      result = "\n"
      result += "------------------------------------------------\n"
      result += "------------------ CPU Usage -------------------\n"
      result += "------------------------------------------------\n"

      plogs_by_proc = defaultdict(list)
      for pl in self.service_msgs['procLog']:
        for x in pl.procLog.procs:
          if len(x.cmdline) > 0:
            plogs_by_proc[x.name].append(x)
      print(plogs_by_proc.keys())

      cpu_ok = True
      dt = (self.service_msgs['procLog'][-1].logMonoTime - self.service_msgs['procLog'][0].logMonoTime) / 1e9
      for proc_name, expected_cpu in PROCS.items():

        err = ""
        exp = "???"
        cpu_usage = 0.
        x = plogs_by_proc[proc_name[-15:]]
        if len(x) > 2:
          cpu_time = cputime_total(x[-1]) - cputime_total(x[0])
          cpu_usage = cpu_time / dt * 100.

          if isinstance(expected_cpu, tuple):
            exp = str(expected_cpu)
            minn, maxx = expected_cpu
          else:
            exp = f"{expected_cpu:5.2f}"
            minn = min(expected_cpu * 0.65, max(expected_cpu - 1.0, 0.0))
            maxx = max(expected_cpu * 1.15, expected_cpu + 5.0)

          if cpu_usage > maxx:
            err = "using more CPU than expected"
          elif cpu_usage < minn:
            err = "using less CPU than expected"
        else:
          err = "NO METRICS FOUND"

        result += f"{proc_name.ljust(35)}  {cpu_usage:5.2f}% ({exp}%) {err}\n"
        if len(err) > 0:
          cpu_ok = False
      result += "------------------------------------------------\n"

      # Ensure there's no missing procs
      all_procs = {p.name for p in self.service_msgs['managerState'][0].managerState.processes if p.shouldBeRunning}
      for p in all_procs:
        with subtests.test(proc=p):
          assert any(p in pp for pp in PROCS.keys()), f"Expected CPU usage missing for {p}"

      # total CPU check
      procs_tot = sum([(max(x) if isinstance(x, tuple) else x) for x in PROCS.values()])
      with subtests.test(name="total CPU"):
        assert procs_tot < MAX_TOTAL_CPU, "Total CPU budget exceeded"
      result +=  "------------------------------------------------\n"
      result += f"Total allocated CPU usage is {procs_tot}%, budget is {MAX_TOTAL_CPU}%, {MAX_TOTAL_CPU-procs_tot:.1f}% left\n"
      result +=  "------------------------------------------------\n"

      print(result)

>     assert cpu_ok
E     assert False

selfdrive/test/test_onroad.py:301: AssertionError
____________________________________________________________________________________________________ TestOnroad.test_timings ____________________________________________________________________________________________________

self = <selfdrive.test.test_onroad.TestOnroad object at 0x7f9c158450>

    def test_timings(self):
      passed = True
      result = "\n"
      result += "------------------------------------------------\n"
      result += "----------------- Service Timings --------------\n"
      result += "------------------------------------------------\n"
      for s, (maxmin, rsd) in TIMINGS.items():
        msgs = [m.logMonoTime for m in self.service_msgs[s]]
        if not len(msgs):
          raise Exception(f"missing {s}")

        ts = np.diff(msgs) / 1e9
        dt = 1 / SERVICE_LIST[s].frequency

        try:
          np.testing.assert_allclose(np.mean(ts), dt, rtol=0.03, err_msg=f"{s} - failed mean timing check")
          np.testing.assert_allclose([np.max(ts), np.min(ts)], dt, rtol=maxmin, err_msg=f"{s} - failed max/min timing check")
        except Exception as e:
          result += str(e) + "\n"
          passed = False

        if np.std(ts) / dt > rsd:
          result += f"{s} - failed RSD timing check\n"
          passed = False

        result += f"{s.ljust(40)}: {np.array([np.mean(ts), np.max(ts), np.min(ts)])*1e3}\n"
        result += f"{''.ljust(40)}  {np.max(np.absolute([np.max(ts)/dt, np.min(ts)/dt]))} {np.std(ts)/dt}\n"
      result += "="*67
      print(result)
>     assert passed
E     assert False

selfdrive/test/test_onroad.py:411: AssertionError
___________________________________________________________________________________________________ TestOnroad.test_engagable ___________________________________________________________________________________________________

self = <selfdrive.test.test_onroad.TestOnroad object at 0x7f9c158b10>

    def test_engagable(self):
      no_entries = Counter()
      for m in self.service_msgs['onroadEvents']:
        for evt in m.onroadEvents:
          if evt.noEntry:
            no_entries[evt.name] += 1

      eng = [m.controlsState.engageable for m in self.service_msgs['controlsState']]
>     assert all(eng), \
             f"Not engageable for whole segment:\n- controlsState.engageable: {Counter(eng)}\n- No entry events: {no_entries}"
E     AssertionError: Not engageable for whole segment:
E       - controlsState.engageable: Counter({False: 3355, True: 2644})
E       - No entry events: Counter({<tooDistracted enum>: 104, <wrongCarMode enum>: 102})
E     assert False
E      +  where False = all([True, True, True, True, True, True, ...])

selfdrive/test/test_onroad.py:432: AssertionError
===================================================================================================== slowest 10 durations ======================================================================================================
152.73s setup    selfdrive/test/test_onroad.py::TestOnroad::test_service_frequencies
0.80s setup    selfdrive/test/test_onroad.py::TestOnroad::test_memory_usage
0.80s setup    selfdrive/test/test_onroad.py::TestOnroad::test_cloudlog_size
0.80s setup    selfdrive/test/test_onroad.py::TestOnroad::test_startup
0.80s setup    selfdrive/test/test_onroad.py::TestOnroad::test_gpu_usage
0.80s setup    selfdrive/test/test_onroad.py::TestOnroad::test_camera_processing_time
0.80s setup    selfdrive/test/test_onroad.py::TestOnroad::test_cpu_usage
0.79s setup    selfdrive/test/test_onroad.py::TestOnroad::test_log_sizes
0.79s setup    selfdrive/test/test_onroad.py::TestOnroad::test_ui_timings
0.79s setup    selfdrive/test/test_onroad.py::TestOnroad::test_engagable
==================================================================================================== short test summary info ====================================================================================================
FAILED selfdrive/test/test_onroad.py::TestOnroad::test_cpu_usage - assert False
FAILED selfdrive/test/test_onroad.py::TestOnroad::test_timings - assert False
FAILED selfdrive/test/test_onroad.py::TestOnroad::test_engagable - AssertionError: Not engageable for whole segment:
============================================================================ 3 failed, 9 passed, 2 skipped, 73 subtests passed in 171.08s (0:02:51) =============================================================================

Copy link
Contributor

@robin-reckmann robin-reckmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some additional services that fail, but can be disabled.

userspace/services.sh Show resolved Hide resolved
@robin-reckmann
Copy link
Contributor

Some tools like nvme (e.g. nvme list) and i2cdetect dont work, because the newer cli versions require an updated kernel. They are not strictly necessary, but probably still nice to have.

@andiradulescu
Copy link
Collaborator Author

Good catch, didn’t test i2cdetect. nvme list doesn’t work in 20.04 neither. It doesn’t output anything - nvme-cli 1.0 is silent compared to nvme-cli 2.0 which errors.

The nvme-cli commands used for openpilot work fine.

@robin-reckmann
Copy link
Contributor

nvme needs sudo in 20.04 and should work there. But probably ok to keep as is at it'll be fixed with the newer kernel.

@andiradulescu
Copy link
Collaborator Author

andiradulescu commented Jul 31, 2024

sudo nvme list and nvme list both do the same thing, doesn't output anything in 20.04 and output an error on 24.04 - more info here linux-nvme/nvme-cli#2241

EDIT:

sudo nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     S64DNL0WCXXXXXW      Samsung SSD 980 500GB                    1         425.79  GB / 500.11  GB    512   B +  0 B   3B4QFXO7

indeed it works with a NVME drive in C3

@andiradulescu
Copy link
Collaborator Author

To clear this out, even if nvme list fails in 24.04, the commands used in openpilot run fine in 24.04 (tici/hardware.py and bootlog.cc):

sudo nvme smart-log --output-format=json /dev/nvme0
sudo smartctl -aj /dev/nvme0

@andiradulescu
Copy link
Collaborator Author

Took a while to investigate the size increase (4.5G from 4.0G compared to 20.04). Most packages are bigger, some are smaller, just llvm has a big change:

  • llvm 18 vs 10 -> +237MB (from llvm meta package)
image

@andiradulescu
Copy link
Collaborator Author

andiradulescu commented Aug 2, 2024

Apart from the size increase, from my point of view, it's ready for testing. I'm still pending the tests that need factory resets. Doing them asap.

I'm writing a separate comment to what I'm proposing to reduce the size.

Copy link
Contributor

@adeebshihadeh adeebshihadeh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Glanced over and looks like there's still a bunch of TODOs and commented out stuff. Can you do a pass through all that and make sure everything's resolved?

userspace/base_setup.sh Outdated Show resolved Hide resolved
userspace/hardware_setup.sh Outdated Show resolved Hide resolved
userspace/services.sh Outdated Show resolved Hide resolved
Copy link
Contributor

@adeebshihadeh adeebshihadeh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final things to do before merging:

@andiradulescu
Copy link
Collaborator Author

andiradulescu commented Aug 8, 2024

instructions for rest of debs

done

push the debs to LFS

agnos-builder is on GitHub LFS - not GitLab LFS

check the systemd service diff

good point, 160 loaded units listed in 24.04 vs 20.04:

* there is a nice addition like systemd-repart.service and some services that we should disable (like TPM2 PCR * and others)
** used systemctl list-units --type=service --all | sort to list them

@andiradulescu
Copy link
Collaborator Author

the build is fixed now (with rebuilt debs).

just systemd services disable is pending, will do it tomorrow.

@andiradulescu
Copy link
Collaborator Author

andiradulescu commented Aug 9, 2024

updater has the same libqmapboxgl.so issue:

/data/openpilot/system/hardware/tici/updater: error while loading shared libraries: libqmapboxgl.so: cannot open shared object file: No such file or directory

EDIT: fixed

@andiradulescu andiradulescu mentioned this pull request Aug 10, 2024
20 tasks
Copy link

✅ AGNOS update 2404-2 ready

In an openpilot branch, download agnos.json in system/hardware/tici/ and update AGNOS_VERSION to 2404-2 in launch_env.sh.

For flashing locally, download and unarchive the images in agnos-builder/output and flash with ./flash_all.sh.

Images:

@adeebshihadeh
Copy link
Contributor

Looks good!
image

@adeebshihadeh adeebshihadeh merged commit 4a924da into commaai:master Aug 13, 2024
2 checks passed
@andiradulescu andiradulescu deleted the 24.04 branch August 14, 2024 06:42
@coder351 coder351 mentioned this pull request Aug 21, 2024
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants