Mix nerves.system.shell run into "sh: 1: exec: tty_sl: not found"

I am running into this error when trying to start a nerves.system.shell to customize buildroot. But to keep the debug and this discussion simpler I am using the workspace from nerves_examples/blinky and see the same error.

venkat@XPS-8930:~/work/pp/nerves/nerves_examples/blinky$ mix nerves.system.shell
==> nerves
sh: 1: exec: tty_sl: not found
** (ArgumentError) argument error
    :erlang.port_control(#Port<0.6>, 25889124, [])
    (nerves 1.10.3) lib/mix/nerves/shell.ex:106: Mix.Nerves.Shell.get_tty_geometry/1
    (nerves 1.10.3) lib/mix/nerves/shell.ex:49: Mix.Nerves.Shell.open/2
    (nerves_bootstrap 1.11.5) lib/attic/system.shell.ex:74: Mix.Tasks.Nerves.System.Shell.run/1
    (mix 1.15.4) lib/mix/task.ex:447: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.15.4) lib/mix/cli.ex:92: Mix.CLI.run_task/2
    /home/venkat/.asdf/installs/elixir/1.15.4-otp-26/bin/mix:2: (file)

I did run into this sh: 1: exec: tty_sl: not found - Questions / Help - Erlang Programming Language Forum - Erlang Forums which says I may have old version of rebar.

Could this be related to rebar?


This is due to the underlying shell system changing with OTP 26 which is incompatible with how mix nerves.system.shell was previously working. See Adjust `mix nerves.system.shell` for OTP 26 by jjcarstens · Pull Request #897 · nerves-project/nerves · GitHub for more details.

A new release is being created to help handle this. We’ve investigated multiple ways to config the env and pass on the shell like before, but they have all been dead ends :cry:In the meantime, the task will still configure the environment and print out a command that can be run manually in your local shell to have the same effect

The workaround and capturing was released in :nerves v1.10.4

1 Like

Thanks so much. I haven’t picked up new release yet, but was able to point my nerves to github and get the fix.