We've worked for multiple years with artiq6 and then artiq7 now. Recently we tried to upgrade our systems to artiq8 following the steps here https://m-labs.hk/artiq/manual/developing.html
However, after navigating to the artiq git clone on branch release-8 and running
nix develop
the installed version is
ARTIQ v8.0+unknown.beta
Using nix shell gives
ARTIQ v8.8882+a6b76c0
however, this can't generate the firmware.

After flashing the hardware and checking the serial log it will also confirm that the version is ARTIQ v8.0+unknown.beta

and afterwards running any scripts gives a version mismatch.

ARTIQ: (30, 'worker(353,20240711124112649165.py)', 1720694473.5179875, 'artiq.coredevice.comm_kernel:Mismatch between gateware (8.0+unknown.beta) and software (8.8881+e8da758) versions')

The second version here is from MSYS on Windows.

If it was just this warning it wouldn't matter, but I believe it is related to the actual problem.
Using any TTL, Fastino, Zotino and Mirny works fine. However, initializing the Urukul AD9910 gives an I2C Bus error.

ARTIQ: (40, 'worker(354,20240711124257777432.py)', 1720694579.9667747, 'root:Terminating with exception (I2CError: I2C bus could not be accessed)
Core Device Traceback:
Traceback (most recent call first):
  File "ksupport/nrt_bus.rs", line 53, column 18, in (Rust function)
    <unknown>
                     ^
  File "C:/Users/muel_k0/dev/Artiq/Crates/TechnoSystem/generatedCode/2024-07-11/12/20240711124257777432.py", line 47, in ... artiq_worker_20240711124257777432.urukul_test.init<artiq_worker_20240711124257777432.urukul_test>(...) (RA=+0x474)
    self.urukul0_ch0.init()
  File "C:/Users/muel_k0/dev/Artiq/Crates/TechnoSystem/generatedCode/2024-07-11/12/20240711124257777432.py", line 52, in artiq_worker_20240711124257777432.urukul_test.run(..., ...) (inlined)
    self.init()
  File "<artiq>/coredevice/ad9910.py", line 92, in ... artiq.coredevice.ad9910.SyncDataEeprom.init<artiq.coredevice.ad9910.SyncDataEeprom>(...) (RA=+0xfa8)
    word = self.eeprom_device.read_i32(self.eeprom_offset) >> 16
  File "<artiq>/coredevice/ad9910.py", line 464, in ... artiq.coredevice.ad9910.AD9910.init<artiq.coredevice.ad9910.AD9910>(...) (inlined)
    self.sync_data.init()
  File "<artiq>/coredevice/i2c.py", line 167, in ... artiq.coredevice.i2c.I2CSwitch.set<artiq.coredevice.i2c.I2CSwitch>(...) (RA=+0x2d54)
    i2c_switch_select(self.busno, self.address >> 1, 1 << channel)
  File "<artiq>/coredevice/kasli_i2c.py", line 41, in ... artiq.coredevice.kasli_i2c.KasliEEPROM.select<artiq.coredevice.kasli_i2c.KasliEEPROM>(...) (inlined)
    self.sw0.set(self.port)
  File "<artiq>/coredevice/kasli_i2c.py", line 67, in ... artiq.coredevice.kasli_i2c.KasliEEPROM.read_i32<artiq.coredevice.kasli_i2c.KasliEEPROM>(...) (inlined)
    self.select()
artiq.coredevice.exceptions.I2CError(0): I2C bus could not be accessed

I had the same error many times in the past and it was always related to version mismatches and fixed after reflashing the crate with updated firmware. This time however, I'm unable to get the firmware to any other version but ARTIQ v8.0+unknown.beta

It all works fine if I roll back to artiq-7.

Any help would be appreciated!

    Kaisky however, this can't generate the firmware.

    We are not able to help with such a terse description of the problem.
    It works for us.

      sb10q
      What i meant is, that running "nix shell" doesn't enable
      python -m artiq.gateware.targets.kasli <description>.json
      but only nix develop does.

      Do you mean it is possible to generate firmware after nix shell or do you get the correct version after nix develop? I reinstalled the whole environment and nix multiple times.

        Please read the flake source and/or the developer documentation carefully. You need a different nix shell or set environment variables to build firmware on 8.

        Alternatively you can get a AFWS subscription.

        https://m-labs.hk/artiq/manual/developing.html
        Is this not the correct documentation? nix shell doesn't appear here but only in https://m-labs.hk/artiq/manual/installing.html but only the first link describes how to build firmware. I read both very carefully many times...

        For the past two Artiq versions we've always build firmware and flashed the system with the nix develop command as the documentation describes. I don't understand what changed in Artiq-8 since the documentation page about developing seems nearly the same except some minor changes. Also I am able to build firmware with artiq-8, it just doesn't seem to be on the proper version/configuration, so I assume I'm missing a step that isn't documented yet.

        Our nix shell setup is of course independent, I just made the regard that I do get the correct version there but I did not know that the nix shell console is able to build firmware as well, since I don't see anything about this in the documentation.

          Kaisky

          The 'Developing' manual page is currently under overhaul and will hopefully be somewhat more complete relatively soon. You might try running nix develop .#boards (see the flake).

            Kaisky except some minor changes

            One of those "minor" changes instructs you to set PYTHONPATH. Did you do that?

              13 days later

              architeuthis
              Thanks for the hint, that actually fixed the version.
              The ~/artiq directory is on up-to-date release-8 branch in the screenshot below.

              sb10q Yes

              For the I2C bus error we figured that we don't need the synchronization setting for the urukul. After disabling it and reflashing it works now.