Troubleshooting and FAQ
What This Chapter Covers
This chapter collects the symptoms you are most likely to meet while using PAIO, grouped by symptom, together with the cause, the message that actually appears on screen, and the steps that fix it. Items whose on-screen display differs from the real behavior are called out in a separate blockquote. It is written for every PAIO user, and there are no prerequisites. The normal way to use each feature is covered in that feature's own chapter; this chapter is the one you consult when something behaves differently from what you expected. For the meaning of the terms used here, see 21. Glossary.
The message strings quoted in this chapter are the English originals that the app prints. Search this chapter for the wording you saw on screen and you will find the matching entry. For permission-related symptoms, also read the license lock entry; for import symptoms, read the conflict resolution entry.
20.0 Find It by Symptom
When something does not work, look up the symptom in the table below and then go to the section or document it points to. Symptoms that are not in this table are organized by subsystem from 20.1 on, and if you want to look up an English message exactly as it appeared on screen, see 20.13.
| Symptom | Short answer | Details |
|---|---|---|
| Right-clicking the empty canvas inside a composition shows no menu | This is normal. Right-click the composition frame, not the empty area | 08. VFB Editor 8.4 |
| I cannot find the button that runs validation | There is no button. Validation runs automatically on every edit | 14. Validation 14.1 |
| I pressed Save but the dot (●) on the tab is still there | The tab belongs to another project, the license has expired, or the write failed | 20.3 |
Right-clicking the design, workflow, or export folder shows no menu | This is normal. Only doc and code are fixed folders with a menu | 04. Workspaces and Projects 4.6.5 |
I edited an ARXML in the export folder but nothing changed | export is an output folder. Edit in the editor and export again | 20.5 |
IVC in the tree and In-Vehicle Network on the tab look different | They are the same thing. Only the tree name and the tab title differ | 04. Workspaces and Projects 4.5 |
A signal is shown in red as Overlap | Two signals use the same bits. Adjust START | 07. Signal Editor 7.10 |
| I tried to draw a connector and nothing happened | The protocol or the owning ECU does not match. No message appears | 06. IVC Editor 6.5.5 |
| I cannot create a FlexRay frame | The current version has no FlexRay or Ethernet tab | 02. Specifications 2.5 |
| The name I type keeps reverting to the previous one | It violates the AUTOSAR naming rule | 20.3 |
| No more tabs will open | You can have 20 tabs open at once | 20.3 |
| I want to split the screen but there is no menu for it | There is no menu. Drag the tab onto the right half of the editor area | 05. UI Layout and Navigation 5.3.4 |
| I am not sure whether I can use an AI-generated model as it is | It is a draft. Always check it in each editor and in the Validation panel | 15. AI Assistant 15.4 |
| Undo behaves oddly now that I have several projects open | Undo applies only to the project that owns the active tab | 20.3 |
20.1 Startup, Login, and License
The app starts but shows only the login screen instead of the workspace
This is normal. PAIO builds the main layout only after authentication succeeds. On the login screen you can use either of the following.
- Click Continue with Google. Google sign-in opens in your default browser.
- Type your address in
Email addressand click Continue. A six-digit OTP screen opens.
Check your work: once login finishes, the login overlay disappears and the main layout appears with the header, the Explorer, and the editor area.
I am logged in but cannot edit, and only an upgrade dialog appears
The license is expired (expired) or read-only (readonly). In both states you can only read
and import; editing, generation, deletion, and export are all refused. The operations each
license state allows are as follows.
| License state | Read | Import | Edit, generate, delete | Export |
|---|---|---|---|---|
active (Pro / Enterprise) | O | O | O | O |
trial (within the trial period) | O | O | O | O |
expired | O | O | X | X |
readonly (integrity check failed) | O | O | X | X |
The license indicator at the right of the status bar shows the current state directly. The wording and its meaning are as follows.
| Display | Meaning |
|---|---|
License Expired (warning icon) | Expired or read-only |
Trial — 12d | Trial, days remaining |
Pro - 5 days (warning icon) | Expires within 7 days |
Pro / Enterprise (crown icon) | Normal |
The indicator is clickable, and its tooltip is Click to manage license. For details, see
03. Installation, Login and License.
The dialog that appears when an operation is refused is titled Upgrade Required, and you close it with the Later button at the bottom.
When the dialog keeps coming back: in the expired state, the upgrade dialog appears every time you try to edit. Only one dialog opens at a time, so the windows do not pile up; once you close it, the next refusal opens it again.
I left the app offline for a long time and now export is refused
The license cache is valid for 4 hours. If the app cannot reach the server within that time,
export is refused with OFFLINE_EXPORT_DENIED: A server connection is required. If the session
already authenticated online, you can keep editing and saving. If you started the app while
offline and the cache has also expired, editing and saving are blocked as well, so you must
restore the network and authenticate again. After the network is back, focus the window again;
revalidation runs and export is available once more.
The moment the license turns expired while you are working, a different form of the dialog appears. The title is the same Upgrade Required, but the close button (×) and Later are hidden, so you cannot dismiss it, and it covers everything except the title bar at the top of the window. Once the network is back and the license is valid again, this dialog closes by itself; you do not need to restart the app.
I was signed out without warning
Someone signed in to the same account on another device, which invalidated the session. The
dialog that appears is titled Signed in on Another Device, and its body is
You've been signed out because your account was used on another device.
- With no unsaved tabs, you get a notice with a single OK button, and clicking it signs you out.
- With unsaved tabs, their names are listed and you choose between Save & Sign Out and Sign Out. If the save fails, a Save Failed dialog asks whether to retry.
Clicking the icon does not start the app (Windows)
Part of the installation is damaged, or antivirus software quarantined it. PAIO stops at startup when the program bundle inside the executable differs from what was installed, and in that case no error window and no log are left behind; the app exits immediately. This is a different symptom from the integrity-check lock below, where a window does open with an explanation.
Uninstall PAIO and install an official release again. Uninstalling does not delete your user data, so your work is preserved.
The integrity check locks features (Windows)
Right after startup, PAIO compares PAIO.exe against its own Authenticode signature in the
background. This check runs only on Windows installations. The behavior for each result is as
follows.
| Check result | Behavior |
|---|---|
| Signature valid and signer matches | Normal. Nothing is locked |
| No signature | Nothing is locked |
| Cannot be determined | Nothing is locked. Expired certificate, revocation server unreachable, and so on |
Hash mismatch (hash-mismatch) | Locked |
Signer mismatch (wrong-signer) | Locked |
When the lock applies, the following dialog appears once.
PAIO could not verify the integrity of its installation.
Please reinstall PAIO. Editing is disabled for this session.
This dialog does not terminate the app. You can still open projects and read them; only editing
is blocked. Diagnostic information is written to the tamper-report.log file in the user data
folder. On Windows this is %APPDATA%\PAIO\tamper-report.log (it sits in that parent folder, not
in a per-workspace workspace-<hash> subfolder). The file contains only the executable path and
the signature state, so you can send it to support as it is. The fix is to install an official
release again.
20.2 Workspaces and Projects
My project name is rejected
The name dialog (New Project) that opens from the Explorer context menu and from Project ▸ New Project applies the following rules and messages.
| Condition | Message shown |
|---|---|
| Empty | Project name cannot be empty |
| Contains anything other than letters, digits, hyphens, and underscores | Project name can only contain letters, numbers, hyphens, and underscores |
| A reserved Windows device name | "<name>" is a reserved system name and cannot be used |
| A name that already exists (case-insensitive) | Project "<name>" already exists |
The reserved device names are CON, PRN, AUX, NUL, COM0 to COM9, and LPT0 to LPT9,
and the check is case-insensitive. For example, DoorEcu and Door_Ecu-01 pass, while
Door Ecu (with a space) and con are rejected. The same rules apply to the project name field
in Quick Start.
The New Project button on the welcome screen uses different rules. The New Project button shown in the editor area right after you open a workspace checks only one of the four rules above, the character rule. So if you type a name that already exists, the dialog accepts it and the failure happens later, at project creation, as a duplicate. When that happens, no message appears on screen and the project simply is not created. If no project appears, check whether the same name is already in use.
The rules for renaming a project differ from the rules for creating one
The dialog that opens from Rename Project in the project node's context menu uses different rules from the creation dialog. Instead of listing the allowed characters, it blocks only characters that cannot be used in a file name. The conditions and messages are as follows.
| Condition | Message shown |
|---|---|
| Empty | Project name cannot be empty |
Contains one of < > : " / \ | ? * | Project name contains invalid characters |
| A reserved Windows device name | "<name>" is a reserved system name and cannot be used |
| A name another project already uses (case-insensitive) | Project "<name>" already exists |
In other words, a name containing a space is rejected at creation but accepted on rename.
A file does not appear in the Explorer
Each folder has its own display extension filter. A file caught by the filter is not deleted; it is simply not drawn in the tree. The extensions visible in each folder are as follows.
| Folder | Visible extensions |
|---|---|
doc | .md .markdown .html .htm .png .jpg .jpeg .gif .svg .webp .bmp .txt |
code | .c .cpp .h .hpp .cc .cxx .hh .hxx .rs .cmake |
workflow | .yaml .yml .json |
export | .arxml .xml .dbc |
Beyond the extension filter, the code folder also exposes build configuration files by name:
CMakeLists.txt, Makefile, Cargo.toml, Cargo.lock, and every .txt file whose name starts
with cmakelists (such as CMakeLists_copy.txt, case-insensitive). Any other plain .txt file
is hidden in the code folder.
To re-read the tree, click the refresh button at the top of the Explorer (tooltip Refresh Explorer).
The import folder does not appear in the Explorer
This is intended. Creating a project creates six folders on disk — doc, design, code,
workflow, export, and import — but the Explorer tree draws only five of them (doc,
design, code, workflow, export). The import folder exists on disk only.
Expanding the design folder shows a tree instead of files
This is intended. design is drawn as a fixed model tree rather than a file list. The tree has
the following two branches, and it does not grow any deeper.
- System — containing IVC, VFB, Interface, DataType, and Signal
- Module — containing Definition and Configuration
The real path of the VFB node is design/SWC, but the tree shows it as VFB. To inspect the
model files directly, use your OS file explorer. Right-click the project and choose
Open in File Explorer to open that folder.
I cannot rename a fixed folder
doc, design, code, workflow, and export have no rename or delete entries at all in the
Explorer context menu. Only the doc and code folders offer New File and New Folder;
right-clicking the other fixed folders shows no menu.
I deleted a fixed folder in the OS explorer and it came back
This is intended. When the workspace file watcher detects that a fixed folder was deleted
(unlinkDir), it recreates that folder automatically. It does not recreate anything while the
project itself is being deleted.
20.3 Editing and Saving
The dot (●) on the tab does not go away
It means the tab has unsaved changes. There are three ways to save.
Ctrl+S— saves the active editor. It takes the same path as the Save menu even when focus is outside the editor, for example in the editor area itself.- Project ▸ Save (
Ctrl+S) — the same path as above. - Project ▸ Save All — saves only the project that owns the active tab.
Check your work: when the save succeeds, the dot on the tab disappears.
If the dot stays, the cause is one of the following three.
- That tab belongs to another project. Save All saves only the active tab's project, so click a tab of the other project to make it active and save again.
- The license has expired. In that case the upgrade dialog appears instead the moment you try to save (see 20.1).
- The file write failed for some other reason, such as insufficient permissions, a dropped remote connection, or a disk error. In this case no message appears on screen, only the dot remains, and the failure is recorded in the developer console alone.
Where display and behavior differ: Project ▸ Save As... (
Ctrl+Shift+S) is present in both the menu and the command palette, but globally it does nothing. The IVC editor and the DataType editor do handleCtrl+Shift+Sthemselves, so with focus on either canvas theSave IVC DiagramorSave DataTypessave dialog opens. For details, see 19. Keyboard Shortcuts.
The name I typed is not applied and only an error marker appears
The name violates the AUTOSAR SHORT-NAME rule. A name must start with a letter, followed by letters, digits, and underscores only. Where a name is actually rejected, a 128-character limit applies as well. Two messages can attach to the field.
| Condition | Message shown |
|---|---|
| Empty or whitespace only | Name is required |
| Contains characters the rule does not allow | Must start with a letter, then letters/digits/underscores only |
An empty name is shown in red and is not written to the model. A name is an identifier in AUTOSAR, and if an empty name entered the model it would overwrite references in other files with an empty string, which cannot be undone.
A name containing disallowed characters, by contrast, is only an orange warning, and whether the value is actually blocked depends on the screen. The Adaptive tab and the Persistency interface reject a value in the warning state and keep the previous name, while the Service, Sender-Receiver, Client-Server, and Mode-Switch tabs raise the warning but still write the value into the model. A name that raised a warning can therefore remain saved, so check that no field is left with a warning before you export.
For example, if you try to rename something to 1stPort on the Adaptive tab, the change is
rejected and the previous name stays. Change it to Port1 and it is applied immediately.
I am worried that Undo will revert work in another project
It will not. Even with editors from several projects open in one window, Undo, Redo, and Save All are limited to the project that owns the active tab. The per-tab dot (●) is tracked precisely per file, independently of the project.
There is one exception. Only the save performed when the app closes (onBeforeClose) covers
unsaved changes in all projects, so that edits in other projects are not lost on exit.
I edited a file outside PAIO and the editor does not pick it up
If that file has unsaved edits, or an edit is in progress, the automatic reload is skipped. This protects your edits, and a warning toast appears.
The message has the following form, and only the first part differs per editor.
<target> changed on disk. Keeping your unsaved edits - save to overwrite the external change.
The wording that fills the <target> slot for each editor is as follows.
| Editor | Wording in the <target> slot |
|---|---|
| IVC | IVC file |
| Signal | Signal file |
| System | System file |
| VFB | VFB files |
| Interface | Interface file |
| The SERVICE model in the Interface editor | Service file |
| DataType | DataType file |
| Module Definition | Module definition file |
| ECUC Configuration | ECUC config file |
This warning does not reappear for the same file within 5 seconds, because an external tool writing the file repeatedly would otherwise repeat the warning endlessly. All of the following count toward the decision.
- Any one of the files that editor handles is unsaved
- A value being typed is not applied yet, such as during typing or while editing a grid cell
- That editor's configuration dialog is open and holds a change
To resolve it, either save first to overwrite the file on disk, or, if you want to discard your changes, close the tab and open it again.
The dialog that asks about saving when a window or a tab closes
The title and body of the dialog that asks whether to save when you close a window or a tab are as follows.
| Situation | Title | Body |
|---|---|---|
| Closing one tab | Unsaved Changes | Do you want to save the changes to <tab name>? |
| Closing the window | Unsaved Changes | Do you want to save the changes to <tab names>? |
The bulk close commands in the tab context menu do not ask about saving. Of the entries you get when you right-click a tab, only Close asks about saving. Close Others and Close All close unsaved tabs too, and those changes are lost. To clean up safely, use Close Saved, which closes only saved (clean) tabs.
Ctrl+B runs a build instead of toggling the sidebar
With focus in the code editor (Monaco), Ctrl+B is that editor's Build command. Click
outside the code editor and press it again, and it toggles the sidebar. For the same reason, in
the code editor Ctrl+F5 is Build & Run, Shift+Alt+F is Format Document, and Alt+O
is Switch Header/Source. For the full list, see
19. Keyboard Shortcuts.
No more tabs will open
You can have 20 tabs open at once. Once the limit is reached, a new tab silently fails to open.
Where display and behavior differ: no message at all is shown to the user when the limit is exceeded. Only the developer console records
Maximum number of tabs (20) reached. If you click a file and nothing happens, suspect this limit.
For ways to clean up, see the tab context menu entry above.
20.4 Import
Start an import by right-clicking the project node and choosing Import. The file picker is
titled Select files to import, its filters are All Supported Files (.arxml + .dbc),
ARXML Files, and DBC Files, and you can select several files at once. For the full procedure,
see 13. Import and Export.
I am worried that the edits I made before importing will be lost
They will not. Right after you pick the files and before the real work starts, the import automatically saves the unsaved edits of every open project. The import rewrites model files and every editor re-reads them from disk, so unsaved edits would silently disappear in that reload.
The whole import is also recorded as a single undo step, so one Ctrl+Z reverts it. The
Edit ▸ Undo menu names the target, as in Undo Import <file name>. The file name shown is
the first of the files you selected, but the undo covers every file that import wrote.
I ran the import again and it was rejected
If the previous import has not finished, or it is waiting at a conflict dialog, a second import does not start. You must finish or cancel the import in progress first. The progress dialog shows one of the following three.
Import rejected: an import is already running. Finish or cancel it first.
Import rejected: an import is waiting on the source-conflict dialog. Finish or cancel it first.
Import rejected: an import is waiting on conflict resolution. Finish or cancel it first.
This keeps a second import from erasing the files the first one already wrote and their undo
information. The PARA Platform button in the Machine Configuration dialog uses the same
import path, so it is rejected under the same conditions; there the message starts with
Base configuration rejected: ....
The import stopped and an "Import Source Conflicts" window appeared
Several of the files you selected define the same element differently. The conflict is between the input files, not with the project.
Next to the window title is the summary — N elements diverge across imported files. Resolve it
as follows.
- Select a conflicting element in the tree on the left. The per-file values appear on the right.
- Choose the file to use as the reference for each element. Pick a file in the Prefer source: dropdown at the bottom and click Apply to remaining to apply that file's values to every item you have not decided yet.
- Click the button at the bottom right, shown as Resolve 3/7 (decided / total), and the
import continues. This button is always clickable. Items you did not decide take the value
from the last file and are recorded as a
DUPLICATE_ELEMENT_MISMATCHwarning.
To stop, click Cancel Import. The body of the confirmation window (Cancel Import?) is
Nothing has been written yet — your project files stay untouched. At this point nothing has
been written, so there is nothing to roll back. Click Keep Resolving in the confirmation
window to return to the conflict window.
A conflict window appeared after the import
An element already in the project conflicts with an incoming one. The window is titled
Conflict Resolution — N conflicts, and for each element you choose one of the following
buttons.
| Button | Behavior |
|---|---|
| Keep Project Version | Keeps the existing project value |
| Use Imported Version | Overwrites with the imported value |
| Merge Fields | Choose which side to use field by field (shown only when the two sides differ) |
| Keep Both | Renames so that both are kept (shown only when the element allows it) |
If you pick fields with Merge Fields and then switch to Keep Project Version or
Use Imported Version, a Discard field edits? confirmation appears, and confirming discards
the per-field choices.
When you are done, click Resolve N/M at the bottom right.
Clicking Resolve without deciding overwrites with the imported values. Undecided items are handled differently here than in the source-conflict window above, which is easy to confuse. If any item remains, an Unresolved Conflicts confirmation appears first, with the body
N undecided conflicts will be overwritten with the imported values.Click Overwrite & Continue there and every undecided item takes the imported value; click Cancel and you return to the conflict window.
To cancel, click Cancel to the left of Resolve (this window has no button named
Cancel Import). A Cancel import? confirmation then appears, with the body
Discards this import and restores your project to its pre-import state. Click Cancel
Import and the project really does return to its pre-import state; click Keep Resolving and
you return to the conflict window. On a successful rollback the toast
Import cancelled — the project was restored to its pre-import state. appears; if the rollback
fails, the toast is Import cancelled, but rollback could not restore: ....
A conflict window raised from the dedicated Import ECUC Configuration cancels differently.
The body of the confirmation is
Conflicting files keep your current values; already-imported files stay applied., and files
that did not conflict and were already written stay in place.
Once you finish deciding and the import continues, a toast of the form
Import complete — conflicts resolved: 3 replaced, 1 kept appears. If applying the changes
fails, the whole project is rolled back and an Import failed: ... toast appears.
The import finished but some data is missing
Where display and behavior differ: the ordinary Import reports only an element count in its completion message (
Import complete: N elements imported from M file(s)). Warnings raised during the import are not shown on screen at all. Unresolved references (theUNRESOLVED_*family), skipped ECUC configurations, and discarded module-level parameters all fall into this category.
When you need to read the original warnings, use the following.
- To re-import only the ECUC configuration, right-click the
design ▸ Module ▸ Configurationnode and use Import ECUC Configuration. This dedicated path reports skipped and rejected modules in a dialog (see the next entry).
An ECUC configuration was not imported
If the matching module definition is not in the project, that module's configuration is
skipped. However, if an ECUC-MODULE-DEF is present in the same ARXML file, the definition is
imported first and the configuration is then matched against it, so a file that carries both
the definition and the configuration needs no separate preparation.
With the dedicated import (Import ECUC Configuration), the result is reported in a dialog. The title is ECUC Configuration Import — Partial, and the body has the following form.
Imported 3 module configuration(s).
Skipped — Module Definition not found:
• Dcm
• Dem
Rejected — definition mismatch:
• Com: Container definition not found in "Com": ComSignalX (instance "ComSignal_0")
The two categories mean different things.
| Category | Meaning | What to do |
|---|---|---|
| Skipped | That module's definition file is not in the project | Import the definition ARXML first |
| Rejected | The definition exists, but a container, parameter, or reference does not match the definition tree structurally | Align the definition version, or check the configuration file |
Note that if you feed the same file through the ordinary Import, these two categories are not shown on screen and remain warnings only.
I imported an ECUC module definition and some items are missing
Parameters and references placed directly under ECUC-MODULE-DEF are discarded on purpose.
The ECUC-MODULE-DEF group in the AUTOSAR R25-11 XSD has no parameter or reference slot, so
keeping them in the model would make the export violate the schema. Unsupported ECUC-*-DEF tags
are ignored for the same reason.
Module definitions are imported along with everything else when you run the ordinary Import
(it looks for ECUC-MODULE-DEF inside the ARXML and writes it as a module definition). There is
no separate menu entry for it.
Where display and behavior differ: there is no menu for importing module definitions on their own, and the "discarded" warning above is not shown on screen on any path. If the definition items are not what you expected, check the original ARXML yourself for parameters and references directly under
ECUC-MODULE-DEF.
Korean and other special characters in a DBC file are garbled
Automatic detection recognizes only a UTF-8 BOM, and without a BOM it reads the file as ISO-8859-1 (Latin-1). A UTF-8 file without a BOM is therefore the cause. Save the file again as UTF-8 with BOM and the problem is gone.
20.5 Export
Run an export by right-clicking the project node and choosing Export. For the full procedure, see 13. Import and Export.
I clicked Export and it failed
Export requires an active license and online validation. On failure, the progress dialog
shows an error that starts with Export failed:, and the cause string that follows is one of the
following three.
| Cause shown | Meaning |
|---|---|
OFFLINE_EXPORT_DENIED: A server connection is required | The server could not be reached |
PLAN_EXPIRED: Export is not permitted on this plan | The license has expired |
INTEGRITY_EXPORT_DENIED: Installation integrity check failed | The installation failed the integrity check |
When the license has expired, the export menu itself is blocked first by the upgrade dialog, so
the PLAN_EXPIRED above appears only when the menu was passed and the server then refused.
These three checks apply not only to the full ARXML export but equally to Extract ECU, Extract Machine, and the DataType export.
I do not know where the output files are created
Output files are always created under <project>/export/. No dialog asks where to save them.
Several files are created in the form <project name>_*.arxml (System, SWC, Interface, COM,
DataType, IDS, EcucModuleDef, and EcucConfVal — only those that have content). The completion
message is Export complete: N elements exported to <project name>_*.arxml, and the export
folder in the Explorer is refreshed automatically.
When you right-click an ECU node in the IVC editor and run Extract ECU (or Extract
Machine for an HPC node), the results are created in the <project>/export/<node name>/
subfolder. The completion message is shown as a file list with <node name> → export/<node name>/ as its subtitle.
I edited an ARXML in the export folder and the design did not change
This is intended. export is a one-way folder that only accumulates export results. PAIO
never reads it back, so editing a .arxml file there does not change the model in design/. The
next export that produces a file of the same name overwrites your edits.
To change the design, edit the model in the matching editor, save it, then right-click the project node and run Export again.
To bring an ARXML you received from outside into the project, do not place it in the
exportfolder; right-click the project node and use Import (13. Import and Export).
My latest edits are missing from the export
Where display and behavior differ: the ARXML export reads the saved files in
design/. This is true of the full project export and of Extract ECU and Extract Machine alike. Unsaved content in open editors is not included, so always save before you export.
ECUC generation (Generate ECUC), by contrast, asks open editors for their latest content first and reads the disk only when no such editor exists.
I re-imported an exported ARXML and the diagram layout changed
This is intended. Node coordinates and sizes are not written to ARXML. The on-screen layout
stays inside the project only. IVC node coordinates live in the IVC model, and the VFB layout is
stored per composition in design/SWC/Layout/<composition name>.vfb.layout. On import, IVC node
coordinates are not read from the file but generated anew on a grid, so the layout differs from
the original even for the same model.
To keep a layout, move or copy the project folder itself. ARXML is a way to move a model, not a way to move a screen.
I want to export to DBC
The current version does not offer a DBC export. To hand CAN information to another tool, use the
<project name>_COM.arxml that the project Export produces (see
13. Import and Export 13.6).
20.6 ECUC Generation
Select an ECU node in the IVC editor and an ECUC GENERATION section appears in the properties panel. For full instructions, see 12. ECUC.
The Generate ECUC button is disabled
The selected ECU node has no CAN connector. An orange warning box appears at the top of the section.
No CAN connector configured. Please add a CAN connector first to enable ECUC generation.
Add a CAN connector to that ECU in the IVC editor and the button and the module checkboxes are enabled together.
The button responds but nothing happens
If no module checkbox is selected, clicking the button does nothing and shows no message. Five modules can be selected, and all of them are checked by default. The files each module generates are as follows.
| Module | Generates |
|---|---|
Can | Can module configuration |
CanIf | CanIf module configuration |
Com | Com module configuration |
EcuC | EcuC module configuration |
PduR | PduR module configuration |
Check your work: on success the toast
ECUC Configuration generated successfully: <ECU name> appears; on failure you get
ECUC generation failed: <cause> or ECUC generation error: <cause>. The whole generation is a
single undo step, so one Ctrl+Z reverts it.
Generation succeeded but the parameters are empty or sparse
Without a module definition, the generator skips the definition-based parameter enrichment step and produces only a minimal configuration. The following warning is recorded, but it is not shown on screen.
Definition file not found for <module>. Generated config may have incomplete parameters.
Where display and behavior differ: this warning, and ECUC generation warnings in general, are not shown on screen. Only the success toast appears, so if the result looks sparse you have to check for the definition file yourself.
For the same reason, the following warnings do not appear on screen either.
| Condition | Warning recorded |
|---|---|
| No CAN controller | ECU '<name>' has no CAN controllers |
| No CAN frame sent or received | ECU '<name>' has no CAN frames |
| The definition file could not be read | Failed to load definition for <module>. Skipping enrichment. |
To fix this, import the module definition from ARXML first, then generate again.
There are two CAN controllers but only one is applied
The current ECUC generator assumes one CAN controller and applies only the first CAN controller. Multi-CAN configurations are not supported.
20.7 Validation
The Validation panel has no run button. Validation re-runs automatically at the following points.
- When you edit the model — it updates while you type as well
- When you click a project node in the Explorer — validation runs even with no editor open
- When the active editor tab changes — the target moves to the project that owns that tab
- When an ARXML import finishes — here it reads the content on disk
- When you switch workspaces
For a full description of the rules, see 14. Validation.
The three messages shown when the result is empty
The message shown when there are no rows depends on the state. It is important to tell these three apart.
| Message shown | Meaning |
|---|---|
No validation issues. | Validation ran normally and found no violations |
Select a project in the Explorer to run validation. | No target project has been determined |
Validation could not run. See the developer console for details. | Validation could not run and failed |
The third does not mean "no problems". In that case the badge on the status bar Validation (V)
button shows ! instead of a number, and the button tooltip changes to
Validation could not run — open the Validation panel.
If the second appears, open an editor from that project, or click the project node in the Explorer.
I do not know what the status bar badge means
The status bar badge means the following.
| Badge | Meaning |
|---|---|
| None | Zero violations |
| A number | The total violation count (the color follows error > warning > info). Above 99 it is shown as 99+ |
! | Validation failed to run |
The tooltip has the form Validation: N error(s), M warning(s), K info(s). The red badge next to
the panel title shows only the error count and is hidden when there are no errors.
I clicked a violation row and it did not navigate anywhere
There are two causes.
- That rule has no navigation target at all. Clicking does nothing and shows no message.
- The violating element is in an area that has no navigation target editor. Click-to-navigate is supported for the following six areas.
| Violation area | Editor that opens |
|---|---|
datatype.* | DataType editor |
interface.* | Interface editor |
vfb.* | VFB editor |
ivc.* | IVC editor |
signal.* | Signal editor |
system.* | System editor |
Violations about ECUC configurations and module definitions have no click target, so open the relevant file directly.
On a successful navigation, the target element is selected and highlighted in red. Clicking another row clears the previous highlight.
20.8 AI
The AI chat button is disabled
Open AI chat with the chat toggle button at the right of the header at the top of the window. In
the normal state this button's tooltip is AI Chat Panel. If the tooltip reads Plan expired,
the license is expired (or read-only) and the button does not respond. The placeholder in the
chat input also changes to Plan expired — upgrade to continue.
Nothing in the provider list is available
There are five providers, each with its own prerequisite.
| Name in the list | Kind | Requirement |
|---|---|---|
| Claude [OPUS] | CLI | claude CLI installed and logged in |
| Claude [GLM] | API | API key registered |
| Gemini | CLI | gemini CLI installed and logged in |
| Codex | CLI | codex CLI installed and logged in |
| Ollama | Local server | Ollama local server running |
With no provider available, sending a message fails with LLM provider is not available.
The provider management dialog opens from two places. Click the gear button in the chat panel
header (tooltip Manage AI accounts), or run Manage AI Accounts... from the command
palette (Ctrl+Shift+P). Note that the header menu bar (Project / Edit / View / Help) does not
contain this entry.
Availability is rechecked automatically every 30 seconds. When you start a login from the dialog, PAIO cannot tell when the login finishes in the browser or the terminal, so it rechecks the state every 5 seconds for up to 2 minutes. It stops as soon as the state changes. If nothing is reflected after 2 minutes, close the dialog and open it again.
I do not like the model the AI produced
Revert it with Ctrl+Z. A change written by AI chat is recorded in the edit history as a single
step even when it spans several files, so one undo reverts the entire write. The Edit ▸ Undo
menu shows the number of files written, as in Undo AI: 3 file(s). It does not name the
individual elements.
QuickStart generation failed
Show error detail appears under the failed step, and expanding it shows that step's original error. Retry on the same line re-runs just that step, while Retry at the bottom re-runs the whole workflow. If the whole run fails, the header title changes to Generation Failed.
Each step retries automatically up to twice on a schema validation failure before it is treated as failed. The LLM call timeout per step is as follows; past this time the call is aborted and the retry logic takes over.
| Step | Timeout |
|---|---|
step-swc | 8 minutes |
step-signal | 6 minutes |
step-datatype, step-interface | 5 minutes |
step-ivc, step-vfb, step-service, step-validate | 4 minutes |
step-system | 3 minutes |
| Steps not in this table | 5 minutes |
For details, see 15. AI Assistant.
20.9 Code and Build
Build reports that it cannot find a compiler
A local (host) build looks for the bundled gcc / g++ first and falls back to a compiler on the
system PATH. With neither available, the execution failure message from the OS is printed to
the output panel as it is. Install a compiler, or check PATH.
On a remote build (WSL, container, SSH), if the exit code is 127 or command not found is
detected, the following hint is printed as well.
Hint: 'gcc' was not found in this environment. Install a C/C++ toolchain
(e.g. 'sudo apt install build-essential' on Debian/Ubuntu).
Note that the default compile options are -Wall -g -std=c++17, that g++ is chosen for the
.cpp, .hpp, .cc, and .cxx extensions and gcc otherwise, and that the timeout is 60
seconds locally and 120 seconds remotely.
I cannot build a single .rs file
Rust needs a project structure with a Cargo.toml. Running Build & Run on a single .rs
file prints the following in the output panel.
Rust files require a Cargo.toml project for Build & Run.
Create a Cargo project (cargo new <name>) or use the terminal:
rustc "<file path>" && ./<output>
Build & Run walks up from the file's location, up to 12 levels, looking for CMakeLists.txt
first and then for Cargo.toml. The hint above appears only when neither is found.
I edited code/Cargo.toml directly and my change was reverted
This is intended. If the code folder contains even one .rs file (including subfolders, but
excluding target and .git), PAIO regenerates and overwrites code/Cargo.toml
automatically, because rust-analyzer needs that file to produce diagnostics.
Two paths rewrite it, and the generated content differs slightly.
| When it runs | version generated |
|---|---|
| Right after app startup, and whenever the project list changes (a new project, a workspace switch) | 0.1.0 |
When you open a .rs file in the code editor and rust-analyzer starts | 0.1.2 |
On both paths the package name is paio-code, the edition is 2021, and one [[bin]] entry is
added per .rs file. Only the version value differs, so if you open a .rs file and then restart
the app, that line appears to flip back and forth. It has no effect on the build.
Keep a Cargo project you manage yourself in a subfolder rather than directly under the code
folder, and it will not be overwritten.
Code completion does not work
The language server may still be starting, or it may have failed. First check whether diagnostics
appear in the PROBLEMS panel below the code editor. For Rust, also check the Cargo.toml
entry above. In a remote environment (SSH, container, WSL), check the deployment requirements in
20.10 Remote.
20.10 Remote
The remote language server is not deployed
The bundled binaries are for glibc-based linux-x64 only. Deployment is refused if any one of the following applies.
| Condition | Result |
|---|---|
uname -s -m is not Linux + x86_64 | Refused (not-linux-x64) |
/lib/ld-musl-* exists (Alpine and other musl distributions) | Refused (not-linux-x64) |
| The bundled binary is not in the package | Refused (bundle-missing) |
The remote $HOME could not be resolved | Refused (home-unresolved) |
On an SSH remote, this situation shows the following toast (only once per workspace).
This remote server is not a supported environment (e.g. arm64, Alpine/musl, or non-Linux),
so code intelligence (completion / diagnostics) is unavailable.
PAIO bundles language servers for glibc Linux x64 remotes only.
A WSL deployment shows the error string in the deployment banner instead of a toast, and there are two variants.
| Condition | Error string |
|---|---|
| The distribution is not x86_64 | WSL distro is not x86_64 — only Linux x64 is supported |
| A musl (Alpine) distribution | WSL distro uses musl (Alpine) — only glibc is supported |
The screen reloads after I connect or disconnect
This is intended. Connecting to a remote, disconnecting from it, and returning to a local folder all reload the window to reset the state cleanly.
Caution. This reload does not ask about saving. Unsaved edits are lost, so always save before you connect or disconnect.
Rebuild is missing from the container menu
Rebuild Container appears only when you entered through Open Folder in Container.... When
you attached through Attach to Running Container..., there is no devcontainer.json and
therefore nothing to rebuild, so the entry is not shown. For the same reason,
Reopen Folder Locally appears only when you entered through
Open Folder in Container....
For remote development as a whole, see 17. Remote Development (SSH, Dev Container, WSL).
20.11 Performance
A diagram with many nodes is slow
The IVC editor and the VFB editor have two toggles in the toolbar at the bottom left of the canvas that turn off continuously redrawn elements. They are icon buttons, so you can read their names only from the tooltips.
| Tooltip | What turning it off removes |
|---|---|
| Toggle Grid | The background grid |
| Toggle Connector Animation | The animation flowing along the connectors |
Both toggles change the display only and do not touch the model, so you can reverse them at any time. Fit to View in the same toolbar puts everything on one screen, so the more nodes you have, the more there is to draw at once. Zooming in on just the area you are working on reduces how much is drawn.
Many open tabs make the app slow
You can have 20 tabs open at once (see the tab limit entry in 20.3). Right-click a tab and use Close Saved to clean up only the saved tabs. Be careful with Close Others and Close All, which close unsaved tabs without asking.
20.12 Other Checks
The checks people use most often are as follows.
| Check | How |
|---|---|
| App version | The v0.5.0 indicator at the right of the status bar, or Help ▸ About PAIO |
| Product information and contact | Help ▸ About PAIO — shows the version and contact@popcornsar.com |
| Check for updates | Help ▸ Check for Updates |
| Contact support | Help ▸ Report Issue — opens https://autosar.io/support/qna in your default browser |
| Find a feature by command name | The command palette (Ctrl+Shift+P) |
On macOS the Help menu in the OS menu bar is shown as well, and Report Issue there opens
https://github.com/popcornsar/PAIO/issues. Windows and Linux use a custom title bar without a
window frame, so only the Help menu inside the app is visible.
I do not know what the update check result means
PAIO only tells you whether a new version is out; it does not download or install one itself. Look up the wording you saw in the table below.
| Result | Display | Buttons |
|---|---|---|
| A new version is available | PAIO <version> is now available. | Later / Download |
| Up to date | PAIO is up to date. | OK |
| Failed | Update check failed: <cause> | Dismiss |
The failure cause string is either Could not reach update server (the feed could not be reached,
or the version could not be read from the response) or
Auto-update is disabled in development mode (running in development mode). Clicking
Download opens https://autosar.io/support in your default browser.
When the background check runs, what it reports, and what happens when you click the status bar indicator are described in 3.5.
20.13 Common Message Index
Use this index when you need to search by the wording you saw on screen rather than by symptom.
License and Integrity
| Message | Entry |
|---|---|
Plan expired | 20.8 |
Plan expired — upgrade to continue | 20.8 |
License Expired | 20.1 |
Upgrade Required | 20.1 |
Signed in on Another Device | 20.1 |
PAIO could not verify the integrity of its installation. | 20.1 |
Import and Export
| Message | Entry |
|---|---|
Import rejected: an import is already running. Finish or cancel it first. | 20.4 |
Import Source Conflicts | 20.4 |
Nothing has been written yet — your project files stay untouched. | 20.4 |
Conflict Resolution — N conflicts | 20.4 |
Unresolved Conflicts | 20.4 |
N undecided conflicts will be overwritten with the imported values. | 20.4 |
Discard field edits? | 20.4 |
Discards this import and restores your project to its pre-import state. | 20.4 |
Conflicting files keep your current values; already-imported files stay applied. | 20.4 |
Import cancelled, but rollback could not restore: ... | 20.4 |
Import complete — conflicts resolved: ... | 20.4 |
ECUC Configuration Import — Partial | 20.4 |
Export failed: OFFLINE_EXPORT_DENIED: A server connection is required | 20.5 |
Export failed: PLAN_EXPIRED: Export is not permitted on this plan | 20.5 |
Export failed: INTEGRITY_EXPORT_DENIED: Installation integrity check failed | 20.5 |
Editing, Validation, and Generation
| Message | Entry |
|---|---|
... changed on disk. Keeping your unsaved edits - save to overwrite the external change. | 20.3 |
Do you want to save the changes to ...? | 20.3 |
Name is required | 20.3 |
Must start with a letter, then letters/digits/underscores only | 20.3 |
Project name cannot be empty / Project "..." already exists | 20.2 |
"..." is a reserved system name and cannot be used | 20.2 |
Project name contains invalid characters | 20.2 |
Validation could not run. See the developer console for details. | 20.7 |
Select a project in the Explorer to run validation. | 20.7 |
No validation issues. | 20.7 |
No CAN connector configured. Please add a CAN connector first to enable ECUC generation. | 20.6 |
ECUC Configuration generated successfully: ... | 20.6 |
Code and Remote
| Message | Entry |
|---|---|
Rust files require a Cargo.toml project for Build & Run. | 20.9 |
Hint: 'gcc' was not found in this environment. | 20.9 |
This remote server is not a supported environment ... | 20.10 |
WSL distro uses musl (Alpine) — only glibc is supported | 20.10 |
WSL distro is not x86_64 — only Linux x64 is supported | 20.10 |
PAIO is up to date. / Update check failed: ... | 20.12 |