---json
{
"name": "Customise & disable"
}
---
====== Customising and disabling built-in devices ======
Change how Axiom handles a device it already knows about. You can customise a copy of a built-in profile, for example to poll a sensor less often, or disable a device type so Axiom stops detecting it.
{{ :axiom:device_library:devlib-devices-changed.png?nolink&800 |}}
===== The Devices tab =====
Connect Axiom and open the **Devices** tab. **Devices on this Axiom** lists records in Axiom’s runtime type table, including custom and suppressed records. Search by name, address text, maker or class (e.g. ''TEMP'' or ''ACC'').
The **Possible I²C** column shows the address expression reported by each indexed definition: one address, alternative addresses (e.g. ''0x1d,0x53''), or a range. These are **possible profile addresses**, not proof of a connected sensor and not physical port numbers. Use **Test & tune → Scan bus** for connected devices.
A dash means the record reports no I²C addresses, as with direct or RSAO-only definitions. **Unavailable** means Axiom returned only metadata without the full record. Rows marked **Not listed in runtime table** use the current stored file instead. Two records with the same name can have different addresses, so each row keeps its own indexed values. The list arrives progressively and is read again after **Refresh device**.
The **State** column describes the current stored file and your browser draft. It does not prove which records were compiled into firmware:
^ State ^ Meaning ^
| **on Axiom** | Reported by Axiom, but this name is not in the current stored library file. |
| **in stored library** | This name is in the current file on Axiom. The file may still be waiting for a restart. |
| **disabled in draft** | Your draft will suppress this type after writing and restarting. |
| **file unknown** | The current library file could not be inspected. Refresh before relying on its contents. |
Some profiles belong to Axiom's own hardware. For example, the battery fuel gauge (MAX17048) is marked **Required by Axiom** and can't be disabled.
Changes you make here only affect your **draft**. They take effect after you write the library and restart Axiom from the **Install** tab.
===== Viewing a definition =====
Click **Definition** next to a profile to open it read-only in the **Advanced JSON** tab. The page says, for example, //MCP9808 as this Axiom defines it. Read only until you customise it.//
{{ :axiom:device_library:devlib-definition.png?nolink&800 |}}
This is a good way to learn the profile format from working examples.
===== Customising a built-in profile =====
This example makes the MCP9808 temperature sensor poll every 10 seconds instead of every 5.
- On the **Devices** tab, click **Definition** next to **MCP9808**.
- Click **Customise this profile**. A copy goes into your draft, labelled **custom draft** in the profile list.
- In the JSON, find ''"pollInfo"'' and change ''"i": 5000'' to ''"i": 10000''. The value is in milliseconds.
- Click **Save to draft**. The page confirms //Saved to local draft. Axiom has not been changed.//
{{ :axiom:device_library:devlib-customised-draft.png?nolink&600 |}}
**How customised profiles are used:** Axiom tries your copy first. If your copy doesn't identify the device, the built-in profile is still tried as a fallback. A mistake in your copy therefore usually leaves the device working with its built-in behaviour. The **Library** column on **Test & tune** reports file membership, not proof that your custom copy matched. Check the boot result and test the device’s behaviour after restarting. The firmware does not report a compiled/custom source flag for each record.
==Just want to try a different polling rate?==
You can change a device's polling interval temporarily on the **Test & tune** tab without editing or installing anything. See [[axiom:device_library:test_and_tune|Testing and tuning devices]]. Customise the profile once you've found a value you want to keep.
===== Disabling a device type =====
Click **Disable** next to a profile to stop Axiom detecting that type. Its state changes to **disabled in draft** and the button becomes **Enable type**, which undoes it.
Disabling works on the **type**, not on one physical device. Every device of that type stops being detected, and so does any customised copy of it. If you had a customised copy, enabling the type again brings your copy back.
===== Installing your changes =====
Open the **Install** tab. **What will change** lists each change:
{{ :axiom:device_library:devlib-install-changes.png?nolink&800 |}}
* **update**: a profile already in the stored library file changes.
* **disable**: Axiom will stop identifying this type.
* **add**: a profile is added to the custom library file (see [[axiom:device_library:add_a_sensor|Adding a new sensor]]). It may customise a same-name built-in; the built-in stays as a fallback.
* **remove**: an entry is dropped from the stored library file.
* **enable**: a disabled type is enabled again.
Tick the review box, click **Write to Axiom**, then click **Restart Axiom**. Check **What Axiom did with the file it has**: your changes are counted under **added** and **disabled**, and **rejected** should be 0.
===== Undoing changes =====
* **One stored customisation or added profile:** on **Devices**, click **Remove from library** beside the entry. Confirm preparing a draft from Axiom’s stored file minus that entry, then review and apply from **Install**. Other stored entries are preserved; browser-only changes are replaced only after confirmation. For the last entry, use the revealed **Remove library & restart** action. See [[axiom:device_library:backup_and_updates#removing_your_library|Removing your library]]. **Advanced JSON → Remove custom** still removes an entry from the local draft.
* **One disabled type:** click **Enable type** on the **Devices** tab. Then write and restart.
* **Everything:** on the **Install** tab, click **Remove library & restart**. Axiom goes back to its built-in profiles. See [[axiom:device_library:backup_and_updates|Backing up, sharing and removing your library]].
==Custom-profile restrictions==
The updated Catalogue labels eligibility **Installable** and gives a reason in **Notes**. This does not mean a profile is installed, detected or tested on your hardware. Older browser builds may still show **Installs** and a broader //Reserved for Axiom's own hardware// message.
Current Device Library firmware rejects custom profiles containing ''0x36'', even for an external sensor, to preserve its internal fuel gauge. It also treats ''0x75'' and ''0x76'' as multiplexer addresses. The updated browser no longer blocks ''0x25'', ''0x70''–''0x74'' or ''0x77'' merely because of their addresses. The browser still restricts these system-profile names: ''AxiomPowerV1'', ''MAX17048'', ''PCA9535'', ''Power'' and ''LEDPixels''. Axiom firmware separately protects ''MAX17048''.
An address restriction does not mean the external sensor is part of Axiom. Supporting external ''0x36'' profiles needs a firmware follow-up; that support has not been added. Reserved I²C addresses outside ''0x08''–''0x77'' remain unavailable in the address-based catalogue.