On our site we have already talked about the installation, configuration and activation of Microsoft products (such MS Office 2013, Windows 8.1 / 2012 R2) using Key Management Service (KMS). Today we look at the concept of KMS activations counter and how to increase it value.
KMS Operation Basics
Let’s return first to the theoretical basics of the KMS activation. According to the Microsoft Volume License, the minimal amount of licenses in the package is 25 pieces. Each Volume License buyer gets a special GVLK key which is used to activate an internal corporate KMS server. However, right after its installation and activation the KMS server will not activate the clients that addressed it. When trying to activate the OS on the KMS server (Windows 7 Pro, in this example), it returns an error:
0xc004f038: The Software Licensing Service reported that the computer could not be activated. The count reported by your Key Management Service (KMS) is insufficient. Please contact your system administrator.
The matter is that the KMS server has a so called activation count (kms counter) which value grows after each activation request from a client in the network. When addressed, the KMS server assigns a unique identifier CMID (client machine identification) to any client and puts it into its database. The computers are not activated at once. It goes on until the internal KMS database reaches the minimal limit of the activation requests received during the last 30 days. This threshold is 5 activation requests from the server OSs and 25 activation requests from the client Windows OSs (the activation thresholds for desktop/server OSs are independent, i. e. if the value of the KMS count has exceeded 25 activation requests from client OSs, this server will not activate server OSs until the number of activation requests from these platform reaches 5). If the client has not sent any requests to the KMS server during 30 days, it is removed from the database and the KMS count is reduced by one.
You can see the number of activation requests on the KMS server any time using the following command:
In this example, the value of the current count is 8.
KMS client activation period is 180 days, and every 7 days (7 days is set by default, it can be changed with the command slmgr.vbs /sri). If within 30 days of activation has not been updated, KMS server removes the client from the database CMID and reduces activation count. The client that hasn’t renewed its activation on the KMS server during 180 days, enters the grace period.
In case if you try to activate a client OS on the KMS server and the count doesn’t increase, it can be caused by the following reasons:
- Duplicating CMID (usually it takes place when cloning an OS)
- More than one KMS server in the network (you can set the current KMS server as follows: slmgr /skms kms_server.woshub.com:1688)
- Clients are using keys other than KMS ones
Increasing KMS Server Client Counter
In some cases even if a GVLK has been purchased, it is hard to find enough clients to overcome the activation threshold of the KMS server (the problem is particularly relevant for small or isolated networks). In this case an administrator starts thinking of driving up the KMS counter. However, it’s not all that simple… Neither sysprep, nor a change of the MAC address for a network card help you to cheat the KMS server. As a quite popular variant, it is suggested to create a sufficient amount of virtual machines and activate them on the KMS server (virtual machines have to be unique rather than created to a same template). However, this method is quite time consuming and requires keeping all these machines functional (or their deploying/turning on every 180 days).
As an easier alternative, we advice using the following script that allows to increase the activations count on the KMS server. Install the necessary version of the OS (in this example, it is Windows 7 Professional), create an any directory and copy the following BAT file into it. Then in the same folder create two empty files named:
for %%i in (. . . . . . . . . . . . . . . . . . . . . . . . . .) do call :Act %skms%
sc stop sppsvc
sc stop sppsvc
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0" "%systemroot%\system32\*" /H /R /K /Y
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0" "%systemroot%\system32\*" /H /R /K /Y
sc start sppsvc
cscript.exe "%systemroot%\system32\slmgr.vbs" /skms %1
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato
sc stop sppsvc
kms1.woshub.com is a DNS name or an IP address of your KMS server.
The number of dots in the line 3 is the necessary amount of requests to the KMS server (in this example, we drive up to 25 requests)
After the script is executed, check the KMS count:
Its value should be over 25. After that the KMS server will activate all the desktop systems that have requested it. Later this script (if there is no enough real clients) should be run every 180 days, since the activation count will reduce if there are no activation requests to the server.