Areca RAID - SNMP subagent howto



Areca is a traditional brand of RAID controllers in various form factors, especially stand-alone controllers for external RAID units and also PCI/PCI-e cards for use inside personal computers.

The Areca RAID firmware traditionally has an inherent TCP/IP stack with HTTP management and SNMP service. (That in addition to a text-mode terminal interface, available via serial console or a BIOS app.)
Speaking of a TCP/IP stack implies, that the Areca controllers principally have an own Ethernet interface on board - only the lower end PCI/PCI-e cards miss that Ethernet port: e.g. the ARC-1110/1210, the ARC-1200 and the ARC-1203-2i. Those RAID controllers without an onboard Ethernet port must communicate with the outside world by mediation of the host operating system, running on the host PC, where the Areca is "just a storage controller".

And this is where things get "interesting". While the HTTP and SNMP services on the own Ethernet port have always been a piece of cake and have always "just worked", the indirect communication via the host OS is more complicated. Sometimes called "PCI in-band communication" in the Areca docs, the HTTP sessions are relayed by an "Areca HTTP proxy" service running in the host OS, and the SNMP agent is handled in a slightly different fashion yet: through a native SNMP service of the host OS, which loads an Areca-specific "sub-agent". The subagent is like a specific plug-in of the SNMP super-service.

This approach is characteristic for the SNMP world = an OS having a principal SNMP agent service which is modular, extensible by auxiliary sub-agents. The UDP socket at port 161 is handled by the OS-own SNMP service, the sub-agents talk to it via an internal "subagent API" (and may use an SNMP toolkit/library provided by the OS-own SNMP support).

The SNMP sub-agent needs to talk to the Areca RAID controller(s) in the system, which happens by IOCTLs through the Areca driver in the host OS kernel. Thus, in order for the Areca SNMP sub-agent to load successfully, you first need an Areca storage driver in the host OS.
In Windows, you probably need to install the driver by hand, downloaded from the Areca website = pass the driver to the Windows installer in the first place, if you boot Windows from an Araca RAID volume.
In Linux, you probably have a driver in your distro - it's been present in the vanilla kernel source tree for ages, and kept fairly up to date to support modern Areca hardware.

And, if the point is to make SNMP work via the host-based subagent, the card's firmware needs a small nudge to cooperate = needs a small bit of configuration. To achieve that, the system admin needs management access = needs the ArcHTTP proxy in the system as well / in the first place.

Thus, this guide effectively covers the installation of all the companion software provided by Areca :-) Of which the SNMP bit can be the toughest.

Areca SW versions tested

While writing this howto, the following firmware and software versions by Areca were working fine:

ARC-1203-2i firmware: 1.56 2020/11/23 (latest at the time of this writing)
ARC-1212 firmware: 1.51 2012/07/04 (latest)
ARC-1110 firmware: 1.49 2010/12/02 (latest)
Windows driver: 2020/10/21 in Windows 10 (LTSC 1809 build 17763.1697) - driver downloaded from Areca
ArcHTTP Windows: 2.5.2 2018/12/20
ArcSnmpAgent Windows: 1.0 2018/01/31
Linux driver: as a standard part of Linux 5.2.7 vanilla kernel
ArcHTTP Linux: 2.5.1 2018/05/29
arecamib Linux: 4.1 2011/01/13

Installation in Windows 10

Driver and Areca HTTP management

The composition of Areca software (driver + ArcHTTP + ArcSnmpAgent) has been constant for ages, since maybe Windows NT. The Windows environment sure has been evolving around it. There's been a transition of the driver from SCSIport to StorPort and maybe WDM to WDF, and the way you go about enabling the SNMP service has recently changed a bit, cosmetically, in Windows 10.

The driver download and install is pretty generic, no need to go into details. It's a storage driver, so you need to make an "F6 floppy" if you want to boot Windows from an Areca RAID volume. As of this writing, all the management (including SNMP) appears to work with Windows 10 compatible driver releases and .

Maybe don't install Areca SNMP just yet, you'd better get the Windows SNMP super-service going first. Just follow the flow of this guide please.
For now, next up is the ArcHTTP Proxy.

The ArcHTTP Proxy is again a pretty simple download and installation, next - next - finish. No need to run the setup.exe explicitly with admin privileges or any special treatment in that vein.

The Areca user-space software lives together in Program Files:

In the bottom right corner of the screenshot just above, I have photoshopped (mspainted, actually) a piece of the systray.
By double-clicking that icon, the Areca tray applet launches a web browser with the local ArcHTTP proxy configuration. See the following two screenshots.
Note that the ArcHTTP proxy listens on TCP port 81 by default (subject to configuration).

Those two screenshots just above were taken on two different machines, with different Windows versions and browsers. Note that one screenshot shows local management on the same host (the one with a localhost in the address row) while in the other screenshot, the browser is connected to a different machine on the LAN. In fact the physical box with the RAID cards is the same in both cases, just managed from a local desktop vs. remotely, and the system had a different set of RAID cards physically inserted in each case.

So far, we've been watching the ArcHTTP's own main menu and configuration. This is not specific to a particular RAID card, this is "machine global" stuff.
Now if you click any RAID card in the list on the left, the hyperlink brings you to the management of the particular RAID card itself. Don't get fooled by the identical looks - a new window has opened and you're talking to a whole different entity!

Because we're running via ArcHTTP (rather than a dedicated Ethernet port), the per-card HTTP interfaces listen on ports other than 80 (and other than 81, which is where ArcHTTP itself places its own main/config screen) = the individual cards in the system get TCP ports 82, 83, 84 etc.

And, the following is crucial, for SNMP to function:
You need to configure the SNMP community string in the RAID adapter's own firmware, and on cards that have an Ethernet port, you also need to switch the firmware's SNMP support to work in-band via PCI, rather than on that dedicated Ethernet port. If you don't get this right, it stops the show for your host-based SNMP sub-agent, as far as that particular RAID card is concerned.

Now that we have the first important pre-requisite over with, it's time to tackle (tickle?) the Microsoft Windows SNMP service.

Windows SNMP service

Not sure about NT/2k anymore, but in modern Windows, the SNMP service is an optional part of the operating system. It doesn't cost an extra fee, but it does not get installed by default.
Before the tile-based Modern UI, i.e. definitely in Windows 7 and earlier, this has been available via the "Programs and Functions" control panel (earlier called "Add/Remove Programs", aka appwiz.cpl), through the sideways menu called "Turn Windows features on or off" - and it has always been a piece of cake to get installed. Pretty obvious really.
Now in Windows 10, the SNMP service as an installable option has moved to the new, "modern UI"-styled "Apps and Features" panel, and deserves a few extra screenshots and... words of reassurance :-)

First of all, how to access the "Apps and Features" panel:
the easiest way is to search for it. Open the search box in one of the numerous possible ways, and type "features". As soon as Windows suggest "Apps and Features" among the matching search results, you can stop typing and just click that result.

You should get into the following "metro" panel:

Here you need to click "Manage optional features", which opens another dedicated panel:

If you have come to install the SNMP service, you "likely" won't find SNMP among the Windows options already installed. Yours is the tile labeled "Add a feature".

And here finally, you should get offered an option labeled "Simple Network Management Protocol (SNMP)".

So if you click that promising tile, it reacts by showing an "install" button. Click install, and we're done.

That was easy, wasn't it? "And, what does the victory actually look like?", I hear you ask. "Do I get a 'finish' button to click?"

Umm. There are actually two possible outcomes: success, and failure.

Windows SNMP service - easy success

Success apparently looks like this:
In the last window depicted above, called "Add a feature", shortly after you click "install", the tile for SNMP just vanishes from the list.
"Okay", you'll probably be wondering, "what do I do next? Are we finished yet?"

Turns out the only thing you can do, is leave that "Add a feature" window. Preferably not by closing the whole applet, but by "going back" one step, web browser style, using the arrow at the top left.
Thus, you will return to the window saying "manage optional features", where you're faced with a tile labeled SNMP, highlighted grey, containing a thin grey horizontal ribbon that looks like a progress bar, except that it does not seem to move in any way. If you click that grey SNMP tile, it produces a button saying "cancel".
[I will add a screenshot as soon as I have a chance to take one.]
You certainly do not want to click "cancel" at this stage, right?
So you just take another step back, i.e. back to "apps and features", hoping that this is really it. And you can already close "apps and features" too.

The ultimate proof that the SNMP Service is installed, is its presence in the traditional services applet (services.msc).

If you kept services.msc open during the installation of the SNMP service, you may need to press F5 to refresh the list of services (the SNMP service should appear).
And, although the service is already there, you will probably find out that its "properties" dialog is missing two tabs, called Traps and Security. These will only appear after a reboot.

And this is what you want to achieve:

Windows SNMP service - the hard way

Now... the installation of the SNMP feature (in the "Add a feature" dialog) may also fail :-(

How do you know that this has happend?
After you click "install" in "Add a feature", and you go back to "Manage optional features", you notice that the Simple Network Management Protocol tile has only showed up for a few seconds, and has vanished - often before you can manage e.g. to click it (trying to bring up that "cancel" button). So you try "Add a feature" again, and sure enough, SNMP has reappeared there, in the list for you to select the feature to install.
So you try "install" again, and it returns back to the list in "Add a feature" in a few seconds.

To verify that there's indeed a problem, you can take a look at the history (log) of "Manage optional features", as mentioned above:

...which can look like this:

Apparently, this is a symptom of some digestive disorder inside the Windows subsystem managing system features and has something to do with the Windows Update as well. It might be specific to a particular Windows 10 build under specific circumstances...
Whatever the cause, there is a workaround that appears to do the job: that forces the installation of the SNMP feature.

From an article at MS Technet, I've taken the crucial inspiration to write my own PowerShell script. You need to run the script or the powershell interpreter from a CMD shell that has elevated (administrator) privileges, and you may face yet another security hurdle - read the script's leading comments to learn the necessary details and find your way through.
The script basically prepares a needed key in the Windows Registry to temporarily modify the behavior of Windows Update, forces the installation of the SNMP feature using the DISM tool (in the form of a PowerShell cmdlet), and cleans up a bit afterwards = returns the Registry keys to their default state.

The successful outcome of this episode should look like this:

And of course you should see the SNMP service listed in services.msc .

Interestingly, if you have just installed the SNMP option "the hard way", you may notice that the SNMP service properties already contain the desired 3 extra tabs, and you can configure them.

Even more interestigly, still talking about "the hard way" aftermath, note that after the very next reboot, those SNMP service tabs will lose their config, and you need to configure them again, this time for good. So effectively, regardless of "the easy way" vs. "the hard way" of enabling the SNMP feature, you have to reboot the computer, before you can finish the config of the Microsoft SNMP service...

Windows SNMP service - configuration

Follow the screenshots to configure the Windows SNMP service, in order for it to properly host the Areca SNMP subagent.
Start in services.msc by right-clicking the SNMP Service to conjure up a context menu. Once in the menu, click Properties.

In the next screenshot, follow the numbered items.

As a result, you should get the "public" community listed under "accepted community names" in the Security tab of the SNMP Service properties.

While you are here, consider also setting the community in the neighboring tab called "Traps" - only needed for traps, possibly just those that are Microsoft's own = the MS SNMP Trap config has no effect on Areca SNMP polling access and possibly no effect on Areca SNMP Traps.

When you feel that you're finished, remember to reboot the machine again for a good measure.

Windows SNMP service - Areca subagent

Next, install the Areca SNMP package (subagent) for Windows.
Once the Areca installer is finished, you may want to restart the SNMP service (if not the whole PC again).

Windows - check listening ports with netstat

To quickly check if the local machine appears to be listening to the various TCP / UDP ports as expected, use netstat -ano

Next, try accessing the services with a web browser and with your SNMP client of choice.

Installation in Debian 9

Tested in Debian 9 64bit with vanilla kernel 5.2.7, containing the arcmsr driver in version (this is the version from vanilla upstream Linux).

Dependencies and initial downloads, approximately:

apt-get install snmpd libsnmp-dev libtool-bin
apt-get install gcc g++

cd /usr/src
mkdir areca
cd areca
unzip *.zip

The Linuxhttp ZIP file contains just a finished binary of archttp. This is just a proxy that passes incoming HTTP sessions for Areca management to the firmware's intenrnal HTTP service.
Feel free to copy that to someplace like /usr/bin/ , and just run that. It won't daemonize and it should report any Areca cards detected in the system, along with the TCP ports allocated (one port for the archttp itself, further TCP ports for individual cards).

The linuxsnmp ZIP file contains a few source files in C++ and a binary library that needs to get combined with the source code to produce a binary called arecamib, which is an SNMP subagent for Linux, subagent to the snmpd from (in Debian, this is a standard package of the distro). My patch mentioned above changes a line or two referring to SNMP header files for inclusion.

cd linuxsnmp_V4.1_110113
patch -p0 < ../areca-linuxsnmp.patch

Read the following two files:

Contrary to what the Areca docs say, you do not need to download the source tree of Instead, you can just download the binary Debian packages, plus their -dev appendices (effectively header files for the binary libraries contained). And, build arecamib inside its own source directory.

Before you "make subagent64" , you should check the Makefile, that this Make target uses a shell script coming with snmpd, called

 net-snmp-config --compile-subagent

This script in my case needed a little patch too. In the original version, this script calls the plain C compiler gcc to link the subagent binary, called arecamib . Which is a problem, because the binary blob library coming from Areca apparently is a C++ thing, and requires a C++ flavoured stdlib. Probably the easiest way to go about this is: replace both two occurences of gcc in /usr/bin/net-snmp-config with g++ :-)

Also, I suggest that you manually copy linux/x86-64/ from the Areca linuxsnmp source directory to /usr/local/lib/ , where it can be found both by the build-time linker and by the resulting arecamib binary at runtime.

So after this, you should be ready for
make subagent64
as the original Areca docs suggest.
Feel free to copy the resulting arecamib to someplace convenient in Linux, such as /usr/bin/ .

Unlike Windows, where the subagent is a DLL, here the arecamib subagent is a stand-alone binary daemon, talking to snmpd through a UNIX socket (a named pipe in the filesystem). The libsnmp has a curious arrangement that allows subagent code to use a single common API, whether it is compiled for monolithic inclusion in snmpd, or to exist as a stand-alone subagent (talking via a pipe).

Another point needs an affectionate touch: the /etc/snmp/snmpd.conf (the link points to an example of my complete config file). This is what the Areca docs say needs to be included at the end of snmpd.conf:

master          agentx
agentXTimeout 60
agentXRetries 10

The default UNIX-domain socket (named pipe) is called /var/agentx/master .

And, it turns out that for the Areca MIB to be authorized to work, a few more lines are necessary. The easiest (although maybe not the finest) way to go about this is:

##  Locate and comment the following line:
#com2sec paranoid  default         public

##  Uncomment or add the following:
rocommunity public
com2sec readonly default public
com2sec readwrite default private

Parts of that config can be old / deprecated / insecure, but importantly for a start, it just works.
It feels unlikely that you'd expose SNMP management to a public network, in a firewall that's prepended to the local system running the SNMP agent - if that's your scenario, you may feel a bit safe even with this insecure config... take this with a grain of salt. "Just because you're paranoid doesn't mean that they aren't after you."

Pitfalls and distractions

Distraction #1:
We've mentioned this before, so this paragraph is a little redundant... Repetitio est mater studiorum.
What the following screenshot shows is the config of the "ArcHTTP proxy" = not the config of an Areca firmware instance.

Read: if the community string is absent here, it won't prevent the ArcSNMP polling access from functioning. Therefore, if your ArcSNMP polling access is defunct, you need to look elsewhere = check the firmware config, rather than this distractively similar config page.

Distraction #2:
The ArcSNMP subagent comes with a companion exe utility, installed in the same directory - and the sole purpose of this EXE is some simple config. The following is a screenshot.

Areca techsupport says, that the community string must be filled in here, in order for ArcSNMP polling access to work. My practical experience is, that it probably does not matter. No harm done if you fill it in. (I believe that the ArcSNMP can send traps on its own, in addition to the separate trap sending capability in ArcHTTP. If you're using traps, feel free to test this.)

Distraction #3:
First of all, in the following screenshot, please note that this is the sweet spot where you absolutely must fill in the Community string. This is the firmware config of a particular RAID card (a particular firmare instance within the host PC).
Now: what about those other three attributes? The sysContact, sysName and sysLocation? Do they matter?

See their effect in this second screenshot:

As far as I can tell, this is the only place where "tic tac toe" surface.
I haven't found them in the SNMP MIB tree (polling access).
Maybe they show up in traps? Not sure.

Distraction #4:
Stale firmware versions may perform less than optimal. Namely:

Firmware 1.49 in ARC-1212 can be kind of sluggish in management, for a few minutes after startup, maybe if the onboard LAN is not connected. Upgrade to 1.51 improves things a lot.
Also, when using PCI inband management (SNMP) on a machine with multiple cards, make sure that all the cards with a native LAN port have the in-band PCI SNMP enabled and the community configured (however, then they won't respond to SNMP on the LAN port.) If this is not fulfilled, you can see various weird effects from the inband management proxy + subagent... apparently such a scenario may be less stable. Generally with Areca you should prefer a fresh firmware version where possible.

Distraction #5:
The Windows firewall. Nowadays called the Defender firewall, in Windows 10.

You should not need to disable the firewall. The Windows SNMP service should create its own rule in the firewall, allowing outside access to its listening UDP port.
In other words, if you really are struggling, you've configured all about Windows and Areca SNMP, and still no go, you may try disabling the firewall too, for a good measure, while trying different things - but don't really expect a miracle to happen, and turn the firewall back on immediately after you finally make SNMP work.

Apparently, the firewall still has a legacy Control Panel of its own.

In the menu column on the left, click the label "Turn Windows Defender Firewall on or off" - and this is what you get:

Again don't blame the firewall automatically - in the case of SNMP, it is likely innocent.
If you're using a different firewall, i.e. something coming with your alternative AntiVirus software, that may be a different matter.

The Areca MIB

The SNMP's Management Information Base is really a hierarchical database with a model that's specified in the ASN.1 language. The MIB files are text files in ASN.1 symbolic notation, the SNMP protocol transports requests and responses encoded in a binary format called ASN.1 BER (for Basic Encoding Rules) encapsulated in UDP over IP.
If needed or just for fun, the textual MIB files can be viewed and edited by any text editor, preferably capable of UNIX EOL's - and there are editors that can syntax-highlight ASN.1, such as the
Notepad++ or the VIM.

For every Areca RAID model, you can find a ZIP file containing MIB files, available for download at the product pages or via the support section.
From a closer look, it turns out that all the MIB files are almost the same, sharing a large portion of the definitions. Yet Areca put up an individual MIB file for every model, with minor differences against other models.

More precisely, for PCI/PCI-e RAID controllers that also have an own onboard LAN port, Areca tends to provide two sets of MIB files:

  1. One for the onboard LAN port (and its SNMP service)
  2. Another one for in-band PCI access via the host OS-based subagent

Looking closer at the differences, you will find that the OS-based / subagent-flavoured MIB download merely allows you to have more than one RAID controller per host computer. Apparently up to 4 distinct RAID controllers are supported per IP address. They are distinguished "two OID decimal places down the path" from the Areca's assigned corporate SNMP ID, which is enterprises.18928 . And, the "RAID controller ordinal number" also seems to encode SAS vs. SATA model (kind of, there are exceptions): = Areca SATA RAID controller #1 = Areca SATA RAID controller #2 = Areca SATA RAID controller #3 = Areca SATA RAID controller #4 = Areca SAS RAID controller #1 = Areca SAS RAID controller #2 = Areca SAS RAID controller #3 = Areca SAS RAID controller #4

And, the exceptions that I know about:
Some older external RAID subsystems that are SAS-based, use (for the fist and only instance on that IP address).
And, the ARC-1203-2i, being de facto a SATA-only RAID controller, responds to - i.e. there's probably some SAS-based pedigree to the hardware/firmware.

While developing this howto, and looking at all the various MIB file downloads (I gradually collected about 5 different ZIP files), I felt the urge to have a single MIB subtree in SNMPb, that would allow me to freely choose any particular controller ordinal number at a whim. And I didn't like the messy multitude of MIB files in my archive. Thus, I decided to try and sort them out a little. To distill the hierarchy and unify the naming conventions a little, making them more generic. And, while at it, I have also changed the declaration of siVendor and siModel from SNMP v1 "OCTET STRING" to SNMP v2 "DisplayString" - for convenience in Wireshark/T-shark, where the SNMP dissector displays OCTET STRING stubbornly in hexa, while DisplayString gets displayed as ASCII. Just the declaration in the MIB file changes the display format, in spite of the (sub)agent sending the same OID's and the exact same value encoding.
I did not bother to do the same for other string items in the MIB where this could be convenient too... reviewing all the items in the MIB would be too much work. And besides, the OCTET STRINGs all display as ASCII in SNMPb, fortunately.

The result is my own set of Areca MIB files, for your enjoyment.

The ARECA-ROOT-MIB and the ARECA_GRP1-MIB are shared files, declaring the upper levels of the hierarchy. (Looking back I could've spared myself the dedicated "group 1" file, but ahh well. I also tried "group 0", but it turned out to be moot / useless, so I didn't package that into the zip.)
So you need those two files too, as they are referenced by the eight larger "ordinal numbered" MIB files.

In the end, it turns out that the 8 "ordinal numbered" MIB files declare a number of overlapping item names, starting from siVendor and siModel. It would be nice to have these globally unique (as seems to be a good standard practice in ASN.1 / SNMP) but would complicate things - and as long as both SNMPb and Wireshark can cope with the overlaps gracefully, I'd just go with that...
I understand that this "data modeling ambivalence" is a property of the SNMP (or ASN.1 ?) metamodel, where there's only a single level of integer-indexed "object instance", being given strictly as the very last element in the OID "dotted path". Thus, there's probably no way to somehow intelligently index say "disk drive #4 in enclosure #3 on controller #1 within this SNMP agent instance".
By now I've probably glimpsed the pain, shared by people maintaining SNMP MIB's for various sorts of networked hardware. And I understand one particular aspect of motivation for alternative "means of data retrieval" for network element management / supervision / data collection. Examples of such alternative means are IMO the Cisco "telemetry" or e.g. a REST-based API just being rolled out by Meinberg...

Installing the MIBs in SNMPb

SNMPb in Windows keeps its MIB files in the program directory, in a subdir called C:\Program Files (x86)\SnmpB\mibs\ .
Interestingly, there appears to be a convention that the MIB files do not have a dotted suffix, but instead end with -MIB ("dash MIB"). I often rename MIB files to match this convention, to make snmpb and other software happy.
Note that the "MIB module name" is not taken from the filename - rather, the SNMP MIB module name is specified inside the MIB file.

So you copy your custom MIB files to the aforementioned directory. SNMPb only ever scans for MIB files on startup = you may need to re-start SNMPb if it was running while you were adding MIB files on disk.
In the following screenshot, the available MIB files are listed on the left and you can move them to the right pane, to get them loaded for use in the SNMPb MIB tree (main screen).

Once you get all the desired SNMP modules loaded, feel free to switch to the pane or tab called "Tree" = the main screen of SNMPb.

Vendor-specific custom MIB subtrees tend to appear under .

Installing the MIBs in Wireshark

Wireshark in Windows keeps its MIB files in the program directory, in a subdir called C:\Program Files\Wireshark\snmp\mibs\ .

Reportedly the inner MIB module name must match the file name exactly, for Wireshark to work with them... not sure I have observed that.

To select the MIB modules to load, go to Edit -> Preferences -> Name resolution.

Mind the two buttons labeled:
SMI (MIB and PIB) paths
SMI (MIB and PIB) modules

The set of MIB modules to load is actually stored in a plain text file called
And, you can actually edit that file while Wireshark is turned off, and add your favourite list of modules by hand, one module per line, in quotes. I'm attaching my own version of the file, for your inspiration.

Wireshark should then dissect SNMP including textual variable names and contents. (The wireshark app may need a restart after this.)

Scribbled by: Frank Rysanek [rysanek AT fccps DOT cz]
Last update: March 2021