Open
Description
When I call pio like this echo "" | pio run -t monitor
, it fails with "Inappropriate ioctl for device":
full command output
Processing htit-wb32la (platform: espressif32; framework: arduino; board: heltec_wifi_lora_32)
--------------------------------------------------------------------------------------------
error: Traceback (most recent call last):
File "/usr/lib/python3.13/site-packages/platformio/__main__.py", line 103, in main
cli() # pylint: disable=no-value-for-parameter
~~~^^
File "/usr/lib/python3.13/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/usr/lib/python3.13/site-packages/platformio/cli.py", line 85, in invoke
return super().invoke(ctx)
~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3.13/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3.13/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3.13/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/lib/python3.13/site-packages/platformio/run/cli.py", line 147, in cli
process_env(
~~~~~~~~~~~^
ctx,
^^^^
...<9 lines>...
verbose,
^^^^^^^^
)
^
File "/usr/lib/python3.13/site-packages/platformio/run/cli.py", line 213, in process_env
ctx.invoke(
~~~~~~~~~~^
device_monitor_cmd,
^^^^^^^^^^^^^^^^^^^
port=monitor_port,
^^^^^^^^^^^^^^^^^^
environment=name,
^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.13/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3.13/site-packages/platformio/device/monitor/command.py", line 154, in device_monitor_cmd
start_terminal(options)
~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3.13/site-packages/platformio/device/monitor/terminal.py", line 54, in start_terminal
term = new_terminal(options)
File "/usr/lib/python3.13/site-packages/platformio/device/monitor/terminal.py", line 102, in new_terminal
term = Terminal(
new_serial_instance(options),
...<2 lines>...
filters=list(reversed(options["filters"] or ["default"])),
)
File "/usr/lib/python3.13/site-packages/platformio/device/monitor/terminal.py", line 28, in __init__
super().__init__(*args, **kwargs)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/serial/tools/miniterm.py", line 395, in __init__
self.console = Console()
~~~~~~~^^
File "/usr/lib/python3.13/site-packages/serial/tools/miniterm.py", line 198, in __init__
self.old = termios.tcgetattr(self.fd)
~~~~~~~~~~~~~~~~~^^^^^^^^^
termios.error: (25, 'Inappropriate ioctl for device')
============================================================
An unexpected error occurred. Further steps:
* Verify that you have the latest version of PlatformIO using
`python -m pip install -U platformio` command
* Try to find answer in FAQ Troubleshooting section
https://docs.platformio.org/page/faq/index.html
* Report this problem to the developers
https://github.com/platformio/platformio-core/issues
============================================================
pio core version is 6.1.17 as packaged for arch.
My use case for this is that I am trying to automate some hardware tests that require two way communication between the host system and the device.