Why can't I activate MATLAB or start the network license manager in a newer Linux environment?
42 views (last 30 days)
MathWorks Support Team on 18 Sep 2013
When trying to activate MATLAB on newer Linux versions, the activation fails. Checking the Host ID shows that the Host ID is 000000000000 which does not work. I also experience issues with the network license manager where it will not start on these new distributions. How can I activate MATLAB or use the license manager in this environment?
MathWorks Support Team on 22 Nov 2022
Edited: MathWorks Support Team on 22 Nov 2022
For MATLAB R2014a and later, licenses can be activated to devices using the Consistent Network Device Naming convention.
For MATLAB R2013b and earlier, licenses can be activated on a machine with no eth0 using a udev rule to rename the device to eth0.
udev rules are constructed as a series of matching conditions and action commands. When a device matches all of the conditions, the assignment commands will be executed. udev rules are stored in /etc/udev/rules.d and must have a .rules extension. They are read and processed in lexicographical order. The udev rule to change the Network Interface Card's will typically be named 70-persistent-net.rules
The simplest udev rule to change the name of an ethernet device, with MAC address xx:xx:xx:xx:xx:xx, to eth0 will be:
There are other methods of changing the name of the ethernet device, but many of them are distribution specific and can not be guaranteed work on all distributions. udev rules take priority on all systems running the udev framework.
If you would like more information about this naming convention change please take a look at the following link:
For releases R2008b and earlier MATLAB must be locked to an eth0 device.
More Answers (4)
Krish Pillai on 3 May 2016
Edited: Walter Roberson on 3 May 2016
I ran into the same issue while attempting to reinstall Matlab 2010b on a Fedora 20 (3.19.5-100.fc20.x86_64) system. The reinstall failed after Fedora was upgraded.
Activation fails with the following error:
"Error 1,714. Unable to activate your machine. This activation process cannot detect a valid Hist ID which utilizes a currently supported naming convention. Please refer to the following solution ID to help resolve the issue 1-661QJD"
Apparently, Matlab is looking for an eth0 device and fails to find it. This was confirmed by Matlab Technical support Case Number is 01379776 and I was directed to this site. The accepted answer at this site did not work on Fedora 20, and hence this comment. It did help me find a solution.
My configuration uses and ASROCK X-58 Supercomputer Motherboard with 2 on-board ethernet devices.
Fedora 20 systemd supports BIOS provided numbers and if that is not supported it looks for a higher level scheme provided either by PCIe index numbers, or if even that isn't available, it resorts to geographical location numbering.
Typically biosdevname makes naming consistent by referring to embedded devices as em[123..], PCI cards as p<slot>p<port> etc. And on the target machine, the ports were being numbered em0, em1.
The recommended steps using dev rules did not work since the 70-persistent-net.rules didn't exist and udev rules created were being ignored.
The following did work. The package biosdevname was removed with "yum erase biosdevname"
"biosdevname=0" was added to kernel boot arguments in /etc/sysconfig/grub .
Adding this to kernel boot args is probably an indication of paranoia, but in case biosdevname gets reinstalled, you don't want the device names to get changed.
Removing biosdevname alone won't suffice since the system will now fall back to geographical numbering and start numbering devices as enp2s0 etc, if you were to reboot. To stop it from auto naming entirely, also add the following to the kernel boot argument "net.ifnames=0".
A sample entry in /etc/sysconfig/grub that disables biosdevname, the nouveau driver and ifnaming is as shown:
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora00/root vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora00/swap $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) rhgb quiet rd.driver.blacklist=nouveau biosdevname=0 net.ifnames=0"
There is some overlap in functionality between biosdevname and ifnames and how udev/rules are used, and it would probably go away once Fedora cleans it up.
Run "grub2-mkconfig -o /boot/grub2/grub.cfg" to generate a new grub.cfg. Don't reboot yet.
You have to rename your network scripts in /etc/sysconfig/network-scripts/ifcfg-em* to if cfg-eth* and edit them so NAME="em*" reads the corresponding "eth*".
Now reboot and confirm your devices show eth* (use "ifconfig -a").
If you do figure out a more optimal way to do this, please let me know or post it here.
Peter O on 22 Nov 2017
It was kind of Walter Roberson to write that up, but I think most users don't want to alter their systems and trigger who knows what else.
Luca Barbierato on 11 Apr 2019
I'm experiencing the same error when I run MATLAB in a network namespace of Linux. Mi configuration is:
# create network namespaces
sudo ip netns add host0
# create TAP interfaces
sudo ip netns exec host0 ip tuntap add mode tap dev tap0
# bring up TAP interfaces
sudo ip netns exec host0 ip link set dev tap0 up
# bring up loopback interface in the namespace
# this is useful if you want to run ping in the namespace
sudo ip netns exec host0 ifconfig lo up
# assign IP addresses to interface
sudo ip netns exec host0 ip addr add 10.0.0.1/32 dev tap0
# add routing table
#sudo ip netns exec host0 route add default gw 10.0.0.1 dev tap0
# create virtual ethernet interface on physical host
sudo ip link add veth1 type veth peer name veth11
# associate virtual ethernet in the physical host to another virtual ethernet in the namespace
sudo ip link set veth11 netns host0
# now configure addresses in the virtual ethernet link
sudo ifconfig veth1 172.20.0.1/24 up
sudo ip netns exec host0 ifconfig veth11 172.20.0.2/24 up
# tell namespace to send all outgoing traffic to the physical host through the virtual ethernet link
sudo ip netns exec host0 route add default gw 172.20.0.1 veth11
# configure physical host to masquerade outgoing traffic generated by others
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# enable routing in the physical host
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Then when I run matlab through namespace:
sudo ip netns exec host0 matlab
I experience this error:
License checkout failed.
License Manager Error -9
This error may occur when:
-The hostid of this computer does not match the hostid in the license file.
-A Designated Computer installation is in use by another user.
If no other user is currently running MATLAB, you may need to activate.
Troubleshoot this issue by visiting:
License path: /home/luca/.matlab/R2018a_licenses:/usr/local/MATLAB/R2018a/licenses/license.dat:/usr/local/MATLAB/R
Licensing error: -9,57.
I also tried to run the activate_matlab.sh but this is the error:
I sincerely don't know how to solve the problem.
Somebody could help me?
Ari Gudmundsson on 10 Nov 2020
Dear matlab, it's hard for me to describe how ridiculous this is without resorting to vile language. Please .... fix this, why would you ask me to change my usb connection to ETH0? WHY? This is like, three lines of code maximum, you could just fix it, and not make life hard for all of us. why do you want to make it so hard for such a meaningless thing. First I download 2008, and the libXp.so.6 is depreciated and unstable, so, fine. I guess I need something newer. But this takes the cake. 2010b literally works perfectly except for YOUR .... mess.
Just fix it, it would seriously take less than 1 hour by 1 engineer. just don't demand it being called a specific name, why did you even ask for it in the first place???? WHAT IS WRONG WITH YOU!?