Repository navigation
Error Codes
xsyetopz edited this page Oct 15, 2026
·
2 revisions
This page lists the stable error codes of OpenJoystickDriver (OJD), with the meaning of each code.
Each code has the form E and four digits. The first digit gives the area:
-
E1xxxis the endpoint. A client of the endpoint gets the code in thecodefield of aStatusline, whosestatusisFailure. -
E2xxxis the command line. -
E3xxxis remapping. -
E4xxxis mod packages. -
E5xxxis documents: the files and lines that OJD reads, such as a profile, a controller record, or a mod manifest.
A code never changes its meaning. When OJD stops using a code, the code is retired. OJD never gives a retired code to a different error.
To look up a code offline, run ojd explain E####.
It also answers for a retired code, and says in which version it was retired.
Branch on the code in your program. The English message that comes with a code can change.
The table is generated from the code catalog and the English text of OJD. The table lists every code, and marks a retired code.
| Code | Area | Meaning |
|---|---|---|
| E1001 | Endpoint | The endpoint is off. Turn it on with 'ojd access enable' and connect again. |
| E1002 | Endpoint | The service refused this client. It has no grant for the scopes it asked for, or its signature or proof is not valid. Run 'ojd access list', grant the client with 'ojd access grant', and connect again. |
| E1003 | Endpoint | Retired in 0.6.0-alpha.1. |
| E1004 | Endpoint | The service could not accept the line. It is not valid, or it came at the wrong time. Send hello first, then one request, and check each line against the endpoint schema. |
| E1005 | Endpoint | The endpoint already serves 8 connections per transport (socket and WebSocket each). Close a connection that you do not need, and connect again. |
| E1006 | Endpoint | The grant of this client was removed while it was connected. Grant it again with 'ojd access grant', and connect again. |
| E1007 | Endpoint | The client read lines too slowly, and 256 lines waited. Read lines as fast as they arrive, and connect again. |
| E1008 | Endpoint | The service already runs 4 virtual gamepads. Close a feed that you do not need, and send feed again. |
| E1009 | Endpoint | The virtual gamepad closed, or the service runs none. Connect again and send feed. |
| E1010 | Endpoint | The service does not speak the apiVersion in a line. Send one of the versions in details.supportedAPIVersions, and connect again. |
| E1011 | Endpoint | A line has a kind that the service does not know, or does not accept at this point. Send Hello first, then Subscription or FeedRequest, then Frame lines, and connect again. |
| E1012 | Endpoint | A line has no apiVersion or no kind. Every line carries both. Add them, and connect again. |
| E2001 | Command line | ojd hit an error it does not recognize. Run 'ojd diagnose' and report the problem with its output. Exit code 1. |
| E2002 | Command line | That is not an ojd command. Run 'ojd --help' to see the commands. Exit code 64. |
| E2003 | Command line | The command line has a wrong or missing option or value. Run the command with --help to see what it takes. Exit code 64. |
| E2004 | Command line | The OpenJoystickDriver service is not running. Start it with 'ojd service start'. Exit code 69. |
| E2005 | Command line | The service did not answer in time. Check it with 'ojd status', or wait longer with --timeout. Exit code 1. |
| E2006 | Command line | The service did not complete the request. Check it with 'ojd status' and try again. Exit code 1. |
| E2007 | Command line | The service rejected this ojd because it is not signed like the app. Run the ojd that ships inside OpenJoystickDriver.app. Exit code 1. |
| E2008 | Command line | A macOS permission is missing. Grant it with 'ojd permission request'. Exit code 77. |
| E2009 | Command line | This command changes or deletes data and needs confirmation. Run it again with --force. Exit code 64. |
| E2010 | Command line | The command stopped before it finished, because you declined, an editor failed, or no input came. Run it again. Exit code 1. |
| E2011 | Command line | The profile or record file is not valid. Fix it against its schema and try again. Exit code 1. |
| E2012 | Command line | No controller, profile, binding, or client matches, or more than one does. List them with the matching 'list' command and name one exactly. Exit code 1. |
| E2013 | Command line | The controller cannot do that now. It may be unsupported, not ready, or disconnected. Check it with 'ojd controller list'. Exit code 1. |
| E2014 | Command line | OpenJoystickDriver is not fully installed, or its signature is not valid. Reinstall the app and run 'ojd diagnose'. Exit code 1. |
| E2015 | Command line | macOS did not complete or apply the request. Check System Settings and try again. Exit code 1. |
| E2016 | Command line | A file could not be read, written, or deleted, or it already exists. Check the path and its permissions. Exit code 1. |
| E2017 | Command line | That client is unsigned or ad-hoc signed, so it cannot be granted access. Sign it with a Developer ID and try again. Exit code 1. |
| E2018 | Command line | 'ojd diagnose' found a failed check. Read its output and fix the failed items. Exit code 1. |
| E2019 | Command line | The update check did not finish. Check your network connection and try again. Exit code 1. |
| E2020 | Command line | The installed OpenJoystickDriver app is older than this ojd. Run './Scripts/ojd build install-fast dev', or set OJD_RUN_REPOSITORY_CLI=1 to run this build. Exit code 1. |
| E2021 | Command line | A repository build of ojd could not hand the command to the installed app. Reinstall OpenJoystickDriver.app and run the command again. Exit code 127. |
| E2022 | Command line | The state that the record's parser produced from the captured reports differs from the expected state. Read the fields that the command lists. Exit code 1. |
| E2023 | Command line | This controller cannot be claimed or released: its protocol family uses raw USB, or macOS does not serve it natively. The message names the reason. Exit code 1. |
| E3001 | Remapping | The controller is not connected or not ready for remapping. Reconnect it and try again. Wire value controller_unavailable. |
| E3002 | Remapping | The selected Joy-Cons could not be paired. Refresh the connected controllers and try again. Wire value joy_con_pair_unavailable. |
| E3003 | Remapping | The controller does not report motion data. Choose a controller with motion sensors, or leave motion options off. Wire value motion_unavailable. |
| E3004 | Remapping | A value in the request is larger than the service accepts. Send a smaller value. Wire value argument_too_large. |
| E3005 | Remapping | The active profile list is damaged and could not be loaded. Repair or remove the damaged file, then try again. Wire value library_corrupt. |
| E3006 | Remapping | A profile with that name already exists. Choose another name; 'ojd profile list' shows the names in use. Wire value duplicate_name. |
| E3007 | Remapping | The request has missing or invalid arguments. Check the values and try again. Wire value invalid_arguments. |
| E3008 | Remapping | The profile is not valid. Review its assignments and try again. Wire value invalid_profile. |
| E3009 | Remapping | The profile library would become too large. Delete profiles you do not need and try again. Wire value library_size_exceeded. |
| E3010 | Remapping | A profile with that identifier already exists. Use a new identifier, or update the existing profile. Wire value profile_already_exists. |
| E3011 | Remapping | The profile changed elsewhere after you loaded it. Reload it and make your change again. Wire value profile_update_conflict. |
| E3012 | Remapping | The library already holds the most profiles it allows. Delete a profile you do not need and try again. Wire value profile_count_exceeded. |
| E3013 | Remapping | No profile has that identifier. List the profiles with 'ojd profile list'. Wire value profile_not_found. |
| E3014 | Remapping | The service could not encode its reply. Try again, and report the problem if it continues. Wire value response_encoding_failed. |
| E3015 | Remapping | The reply is larger than the service can send. Ask for less data and try again. Wire value response_too_large. |
| E3016 | Remapping | The remapping engine is not available. Wait a moment and try again, or restart the service. Wire value router_engine_unavailable. |
| E3017 | Remapping | The profile library and the remapping engine are not available. Wait a moment and try again, or restart the service. Wire value router_library_and_engine_unavailable. |
| E3018 | Remapping | The profile library is not available. Wait a moment and try again, or restart the service. Wire value router_library_unavailable. |
| E3019 | Remapping | The remapping router has shut down. Restart the service and try again. Wire value router_shut_down. |
| E3020 | Remapping | The service could not confirm whether the last profile change was saved. Reload the profiles and check them before you change them again. Wire value transaction_unreconciled. |
| E3021 | Remapping | A profile file could not be read. Check that the file exists and that the service can read it. Wire value library_unreadable. |
| E3022 | Remapping | Damaged profile files must be repaired or removed before profiles can change. Repair or remove them, then try again. Wire value profile_recovery_required. |
| E3023 | Remapping | A profile file could not be written. Check the free disk space and the folder permissions. Wire value library_unwritable. |
| E3024 | Remapping | The remapping service hit an error it does not recognize. Run 'ojd diagnose' and report the problem with its output. Wire value unexpected. |
| E3025 | Remapping | The profile produces no output. Add a binding or a light color to it, or activate it with --allow-empty. Wire value profile_produces_no_output. |
| E3026 | Remapping | The Joy-Con pair profile takes its gyro from the other Joy-Con. Calibrate the motion of the controller that the profile selects for the gyro. Wire value motion_gyro_not_selected. |
| E3027 | Remapping | No remapping profile is active for the controller, so it does not process motion. Activate a profile for it, bring its target app to the front, and try again. Wire value motion_profile_inactive. |
| E3028 | Remapping | The remapping session of the controller changed while the request ran. Try again. Wire value motion_session_changed. |
| E3029 | Remapping | A profile that comes from an installed package cannot be changed. Duplicate the profile and change the copy. Wire value package_profile_read_only. |
| E4001 | Mod | The package manifest mod.json is missing or invalid. Check it against the mod-package schema and run the command again. |
| E4002 | Mod | The package requires a different version of OpenJoystickDriver than the one that runs. Install a package version that supports this version, or update OpenJoystickDriver. |
| E4003 | Mod | A file of the package is invalid, missing, or not listed in mod.json. Fix the file that the command names and run it again. |
| E4004 | Mod | The package covers a controller, persona, or profile that your own files or another installed package already hold. Remove the clashing file or package, or change the package, and run the command again. |
| E4005 | Mod | A package with this name is already installed. Run the command with --force to replace it. |
| E4006 | Mod | No installed package has this name. Run 'ojd mod list' to see the installed packages. |
| E4007 | Mod | The package folder could not be changed. Check the free disk space and the folder permissions. |
| E5001 | Document | A document has no apiVersion, or its apiVersion is not supported by this version of OpenJoystickDriver. Change the document to the supported apiVersion that the message names, and run the command again. |
| E5002 | Document | A protocol description is invalid. Check the file against the protocol-description schema and fix the field that the message names. |
| E5003 | Document | A protocol description names a family that differs from its file name. Name the file after its family. |
| E5004 | Document | A protocol description lists a variant that its family does not have. Use one of the variants of the family. |
- Home
- Start here
- Controllers
- Games
- Remapping
- Your Mac
- Command line
- Help
- Advanced