Chirpstack-concentratord SX1301 stuck in ‘Starting the concentrator’ loop

I followed the instructions here to install concentratord on my MultiTech Conduit AP gateway. I already have Chirpstack-mqtt-forwarder installed and running. After starting chirpstack-concentratord, I am receiving this log output:

2024-01-05T11:46:39.801319-05:00 mtcap monit[2167]: 'chirpstack-concentratord' start action failed
2024-01-05T11:46:39.804067-05:00 mtcap monit[2167]: 'chirpstack-concentratord' process is not running
2024-01-05T11:46:39.805640-05:00 mtcap monit[2167]: 'chirpstack-concentratord' trying to restart
2024-01-05T11:46:39.808374-05:00 mtcap monit[2167]: 'chirpstack-concentratord' start: '/etc/init.d/chirpstack-concentratord start'
2024-01-05T11:46:40.256702-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Starting Concentratord SX1301 (version: 4.3.5, docs: https://www.chirpstack.io/docs/chirpstack-concentratord/)
2024-01-05T11:46:40.258249-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Setting spi device path, spidev_path: /dev/spidev0.0
2024-01-05T11:46:40.260134-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Setting board configuration, lorawan_public: true, clock_source: 0
2024-01-05T11:46:40.261954-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Setting up concentrator radios
2024-01-05T11:46:40.264398-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring radio, radio: 0, enabled: true, center_freq: 902700000, type: SX1257
2024-01-05T11:46:40.266726-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring radio, radio: 1, enabled: true, center_freq: 903700000, type: SX1257
2024-01-05T11:46:40.268550-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Setting up concentrator channels
2024-01-05T11:46:40.270457-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 0, enabled: true, freq: 902300000, rf_chain: 0, if_freq: -400000
2024-01-05T11:46:40.272747-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 1, enabled: true, freq: 902500000, rf_chain: 0, if_freq: -200000
2024-01-05T11:46:40.274736-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 2, enabled: true, freq: 902700000, rf_chain: 0, if_freq: 0
2024-01-05T11:46:40.276650-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 3, enabled: true, freq: 902900000, rf_chain: 0, if_freq: 200000
2024-01-05T11:46:40.278549-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 4, enabled: true, freq: 903100000, rf_chain: 0, if_freq: 400000
2024-01-05T11:46:40.280717-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 5, enabled: true, freq: 903300000, rf_chain: 1, if_freq: -400000
2024-01-05T11:46:40.282610-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 6, enabled: true, freq: 903500000, rf_chain: 1, if_freq: -200000
2024-01-05T11:46:40.284510-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring multi-SF LoRa channel, channel: 7, enabled: true, freq: 903700000, rf_chain: 1, if_freq: 0
2024-01-05T11:46:40.286271-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring Std LoRa channel, enabled: true, freq: 903000000, rf_chain: 0, if_freq: 300000
2024-01-05T11:46:40.288447-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Configuring FSK channel, enabled: false, freq: 0, rf_chain: 0, if_freq: 0
2024-01-05T11:46:40.290118-05:00 mtcap chirpstack-concentratord-sx1301[3910]: Starting the concentrator
2024-01-05T11:47:10.444577-05:00 mtcap monit[2167]: 'chirpstack-concentratord' failed to start (exit status 0) -- '/etc/init.d/chirpstack-concentratord start': Found MTCAP-LORA-915 with MTCAP-LORA-1.5 hardware#012Starting chirpstack-concentratord#012

I’m not sure what is prevening the daemon from starting. If I direct logging to stdout, and set the level to TRACE, and run from the command line by hand, I see this output:

admin@mtcap:~$ RUST_BACKTRACE=full /opt/chirpstack-concentratord/chirpstack-concentratord -c /var/config/chirpstack-concentratord/concentratord.toml -c /var/config/chirpstack-concentratord/channels.toml
2024-01-05T17:50:57.795Z INFO  [chirpstack_concentratord_sx1301::cmd::root] Starting Concentratord SX1301 (version: 4.3.5, docs: https://www.chirpstack.io/docs/chirpstack-concentratord/)
2024-01-05T17:50:57.798Z INFO  [chirpstack_concentratord_sx1301::concentrator] Setting spi device path, spidev_path: /dev/spidev0.0
2024-01-05T17:50:57.802Z INFO  [chirpstack_concentratord_sx1301::concentrator] Setting board configuration, lorawan_public: true, clock_source: 0
2024-01-05T17:50:57.804Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 4, pa_gain: 1, mix_gain: 10, dac_gain: 3, dig_gain: 1
2024-01-05T17:50:57.806Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 11, pa_gain: 3, mix_gain: 8, dac_gain: 3, dig_gain: 3
2024-01-05T17:50:57.807Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 12, pa_gain: 2, mix_gain: 11, dac_gain: 3, dig_gain: 2
2024-01-05T17:50:57.809Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 13, pa_gain: 2, mix_gain: 10, dac_gain: 3, dig_gain: 0
2024-01-05T17:50:57.810Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 14, pa_gain: 2, mix_gain: 14, dac_gain: 3, dig_gain: 3
2024-01-05T17:50:57.811Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 15, pa_gain: 2, mix_gain: 12, dac_gain: 3, dig_gain: 1
2024-01-05T17:50:57.813Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 16, pa_gain: 2, mix_gain: 12, dac_gain: 3, dig_gain: 0
2024-01-05T17:50:57.813Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 17, pa_gain: 2, mix_gain: 14, dac_gain: 3, dig_gain: 2
2024-01-05T17:50:57.814Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 18, pa_gain: 2, mix_gain: 15, dac_gain: 3, dig_gain: 2
2024-01-05T17:50:57.816Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 19, pa_gain: 2, mix_gain: 15, dac_gain: 3, dig_gain: 1
2024-01-05T17:50:57.817Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 20, pa_gain: 3, mix_gain: 9, dac_gain: 3, dig_gain: 0
2024-01-05T17:50:57.817Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 21, pa_gain: 3, mix_gain: 10, dac_gain: 3, dig_gain: 1
2024-01-05T17:50:57.818Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 22, pa_gain: 3, mix_gain: 10, dac_gain: 3, dig_gain: 0
2024-01-05T17:50:57.820Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 23, pa_gain: 3, mix_gain: 11, dac_gain: 3, dig_gain: 0
2024-01-05T17:50:57.821Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 24, pa_gain: 3, mix_gain: 14, dac_gain: 3, dig_gain: 2
2024-01-05T17:50:57.821Z DEBUG [chirpstack_concentratord_sx1301::concentrator] Configuring TX gain, rf_power: 25, pa_gain: 3, mix_gain: 15, dac_gain: 3, dig_gain: 0
2024-01-05T17:50:57.824Z INFO  [chirpstack_concentratord_sx1301::concentrator] Setting up concentrator radios
2024-01-05T17:50:57.824Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring radio, radio: 0, enabled: true, center_freq: 902700000, type: SX1257
2024-01-05T17:50:57.826Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring radio, radio: 1, enabled: true, center_freq: 903700000, type: SX1257
2024-01-05T17:50:57.827Z INFO  [chirpstack_concentratord_sx1301::concentrator] Setting up concentrator channels
2024-01-05T17:50:57.827Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 0, enabled: true, freq: 902300000, rf_chain: 0, if_freq: -400000
2024-01-05T17:50:57.829Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 1, enabled: true, freq: 902500000, rf_chain: 0, if_freq: -200000
2024-01-05T17:50:57.830Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 2, enabled: true, freq: 902700000, rf_chain: 0, if_freq: 0
2024-01-05T17:50:57.831Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 3, enabled: true, freq: 902900000, rf_chain: 0, if_freq: 200000
2024-01-05T17:50:57.833Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 4, enabled: true, freq: 903100000, rf_chain: 0, if_freq: 400000
2024-01-05T17:50:57.833Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 5, enabled: true, freq: 903300000, rf_chain: 1, if_freq: -400000
2024-01-05T17:50:57.835Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 6, enabled: true, freq: 903500000, rf_chain: 1, if_freq: -200000
2024-01-05T17:50:57.836Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring multi-SF LoRa channel, channel: 7, enabled: true, freq: 903700000, rf_chain: 1, if_freq: 0
2024-01-05T17:50:57.839Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring Std LoRa channel, enabled: true, freq: 903000000, rf_chain: 0, if_freq: 300000
2024-01-05T17:50:57.839Z INFO  [chirpstack_concentratord_sx1301::concentrator] Configuring FSK channel, enabled: false, freq: 0, rf_chain: 0, if_freq: 0
2024-01-05T17:50:57.840Z INFO  [chirpstack_concentratord_sx1301::concentrator] Starting the concentrator
thread 'main' panicked at chirpstack-concentratord-sx1301/src/main.rs:111:80:
called `Result::unwrap()` on an `Err` value: lgw_start failed
stack backtrace:
   0:   0x27e490 - <unknown>
   1:   0x2caf78 - <unknown>
   2:   0x27aa94 - <unknown>
   3:   0x27e2a4 - <unknown>
   4:   0x27faa4 - <unknown>
   5:   0x27f77c - <unknown>
   6:   0x280048 - <unknown>
   7:   0x27fea0 - <unknown>
   8:   0x27ea58 - <unknown>
   9:   0x27fc5c - <unknown>
  10:    0x1d408 - <unknown>
  11:    0x1d870 - <unknown>
  12:    0x78e44 - <unknown>
  13:    0x59780 - <unknown>
  14:    0x4628c - <unknown>
  15:   0x275bb8 - <unknown>
  16:    0x79a58 - <unknown>

Here are the configuration files created during installation.

/var/config/chirpstack-concentratord/concentratord.toml

# Concentratord configuration.
[concentratord]

# Log level.
#
# Valid options are:
#   * TRACE
#   * DEBUG
#   * INFO
#   * WARN
#   * ERROR
#   * OFF
log_level="INFO"

# Log to syslog.
#
# When set to true, log messages are being written to syslog instead of stdout.
log_to_syslog=true

# Statistics interval.
stats_interval="30s"

  # Configuration for the (ZeroMQ based) API.
  [concentratord.api]

  # Event PUB socket bind.
  event_bind="ipc:///tmp/concentratord_event"

  # Command REP socket bind.
  command_bind="ipc:///tmp/concentratord_command"


# LoRa gateway configuration.
[gateway]

# Antenna gain (dBi).
antenna_gain=0

# Public LoRaWAN network.
lorawan_public=true

# Region.
region="US915"

# Gateway vendor / model.
model="multitech_mtcap_lora_915"

# Gateway vendor / model flags.
model_flags=[]

# Gateway ID.
gateway_id="0080000000020573"

# Time fallback.
time_fallback_enabled=true

/var/config/chirpstack-concentratord/channels.toml

# LoRa concentrator configuration.
[gateway.concentrator]

# Multi spreading-factor channels (LoRa).
#
# Note: this is for channels 0 - 7 + 64. For more US915 examples see:
# https://github.com/brocaar/chirpstack-gateway-os/tree/master/layers/targets/meta-raspberrypi/recipes-chirpstack/chirpstack-concentratord/files/sx1301
multi_sf_channels=[
  902300000,
  902500000,
  902700000,
  902900000,
  903100000,
  903300000,
  903500000,
  903700000,
]

# LoRa std channel (single spreading-factor).
[gateway.concentrator.lora_std]
frequency=903000000
bandwidth=500000
spreading_factor=8

According to the code, this error comes from a failure in lgw_start(). run() returns an error, which is not handled correctly.

For some reason, the SX1301 HAL cannot start working with your concentrator.