Fix: 'Module failed to load' in AMX Mod X

August 13, 2025 Daemon666 8 min read 11 views

When AMX Mod X cannot bring a module online you see it in the console at boot and in amxx modules: a module sitting at error or bad load instead of running. Modules are native .so/.dll binaries (MySQL, GeoIP, SQLite, cURL, and so on) that expose natives to your plugins, so a failed module takes down every plugin that depends on it. The reason is almost always one of four things, and the AMXX log names which.

1. Read the actual reason

Do not guess from the console. Open the dated log under addons/amxmodx/logs/ and find the module line. AMXX states the cause explicitly — compiled for a newer AMX Mod X, couldn't find, wrong architecture. In the console:

amxx modules

lists every module with its status. That plus the log is your whole diagnosis.

2. Wrong architecture (the number-one cause)

Everything in a CS 1.6 server is 32-bit. A module built for x86-64, or a Windows .dll dropped onto Linux, will never load. Check it:

cd addons/amxmodx/modules
file mysql_amxx_i386.so

It must report ELF 32-bit LSB shared object, Intel 80386. If it says x86-64, you downloaded the wrong build — get the i386 one. Linux modules end in _i386.so or _amxx_i386.so; Windows ones end in _amxx.dll. They are not interchangeable.

3. Missing system libraries

A module can be the right architecture and still fail because a shared library it links against is not installed — the classic case being the MySQL module needing the 32-bit client library. Check what it needs:

ldd mysql_amxx_i386.so

Any line reading not found is a missing dependency you must install as its 32-bit (:i386) package. This is the same class of problem as the engine's missing loader — see the 32-bit library guide. For the database modules specifically, installing the MySQL module covers exactly which library the loader wants.

4. Version mismatch

A module compiled against a newer AMXX than you run will refuse to load with a message like module is compiled for a newer version of AMX Mod X. The fix is to match them: either upgrade AMXX, or use a module build for your version. This is why mixing a fresh module into an ancient 1.8.2 install so often fails — the natives it expects do not exist yet. If you are still on 1.8.2, this is a good moment to read upgrading to 1.10. Conversely, a very old module can fail against a current AMXX; keep the whole set from one era.

5. It is not being loaded at all

If the module is not even listed, it is not being loaded. Modules load from addons/amxmodx/configs/modules.ini, or automatically when a plugin declares it needs them. Make sure the file is present in addons/amxmodx/modules/ and, if you use an explicit list, that its name is in modules.ini without a leading semicolon (which comments it out). See installing AMXX modules for the load mechanics.

One subtlety catches people: modern AMXX auto-loads a module the instant a plugin #includes its header, whether or not it is in modules.ini. So a module can be "not loaded" simply because no plugin references it — which is harmless — or it can fail to auto-load and take the plugin down with it. Match the log line to the plugin that triggered the load, not just to the module in isolation.

Common errors

  • Module requires newer AMX Mod X — version mismatch, step 4. Match module and core versions.
  • Cstrike module required from a plugin, not a module — that is a plugin failing because a module it needs is not loaded, often because the module itself failed here. Fix the module first. Details in that error.
  • Module running but a plugin still says it is missing — the plugin needs a native the module does not export in your version. Upgrade the module.
  • libmysqlclient.so.XX: cannot open shared object file — the exact "missing 32-bit library" case from step 3. Install the i386 MySQL client library.

Verification

After the fix, restart and run:

amxx modules

Every module you expect should read running. Then load a plugin that uses it and confirm the plugin itself starts:

amxx plugins

A module at running and its dependent plugins at running means the chain is whole. If the module is up but a plugin still errors, the problem has moved into the plugin — check its log line the same way.

Contributors: Daemon666 ✦
Share: