perfSONAR 4.0.1 on CentOS 7

I have been playing with perfSONAR 4.0.1 on CentOS 7, using the FullInstall iso image.

I should point out my intention of running perfSONAR with IPv6 only.

The first impressions aren’t that great. The web UI allows me to select Norway as my country of residence, but it doesn’t save the selected country. If I move to Northern Mariana Islands or to Oman, that’s fine. The main dashboard proudly proclaims: “Error loading test listing: Internal Server Error”. I have done nothing but follow the instructions to the letter. Maybe I should try the previous version and see how well that goes.

I won’t claim I know CentOS or any other Linux distros very well, I have stayed with FreeBSD for the past 18-19 years. I am amazed at the number of hoops we need to jump through to get networking ready in CentOS. In FreeBSD everything is usually placed in /etc/rc.conf, that’s one file. OK, some other stuff goes in their respective files. In CentOS you have one or more files for each network interface, and several lines of variables in each file. What forced the Linux community to make such poor choices?

Update 2017-10-05

Running perfSONAR as a XenServer guest forced me to specify inst.text as a bootoption. Consequently, I had to visit the package set submenu where I selected “Minimal install”. Selecting “Basic Web Server” made no difference. Selecting “Server with GUI” or “GNOME desktop” was a no-go.

In the name of science, I tried the previous version, perfSONAR 4.0. This one is worse than 4.0.1. The web UI isn’t UTF-8 aware and the pscheduler service isn’t running at all. Selecting Norway didn’t work either. I also noticed the selected communities are not saved permanently.

Update 2017-10-06

firewalld is mostly to blame for preventing access to the Cassandra NoSQL database. Run these commands to stop and disable firewalld:

systemctl stop    firewalld
systemctl disable firewalld
shutdown -r now Preventive reboot after disabling firewalld.;sleep 1;logout

perfSONAR and its components are remarkably wedded to IPv4. Users running IPv4 only, or dual-stack, will not notice any difference until they turn off IPv4 in favour of IPv6.

One crude workaround is to add a dummy IPv4 address to the NIC, say 192.0.2.x/24 from TEST-NET-1. Don’t bother adding a default gateway for IPv4.


Ensure the hostname resolves to the host’s IPv6 and IPv4 addresses, in that order, via /etc/hosts.

2001:db8::x yourhost.fqdn yourhost
192.0.2.x   yourhost.fqdn yourhost

Better yet, run dual-stack until the matter is resolved.

Windows 10 wedges itself

One or more of the recent updates for Windows 10 rendered my laptop incapable of communicating with the outside world. The Windows Firewall failed to run due to Base Filtering Engine not being able to run either. It’s the dreaded “Error 5: Access denied” error message all over again. Windows 10 also thought it was not activated, which is plain wrong. And no, I haven’t changed any hardware, save upgrading the wireless NIC in May last year. Running sfc /scannow with elevated privileges found nothing wrong. Restoring the system to the state prior to the latest updates made the network and firewall subsystems running again. All is well. What a mess.

Voyager 1 on 2027-12-26T23:59:36,9+0000

I downloaded a new version of NASA’s Eyes from The old version was unable to upgrade itself for some reason.

I ran a simulation on Voyager 1 towards the end of its life. At 2027-12-26T23:59:36,9+0000, the spacecraft changed its attitude, pointing the high gain antenna towards outer space. I checked the Wikipedia article, but found no description. Maybe the change in attitude is an artifact of NASA’s Eyes.

Does anyone know what the final act of Voyager 1 will be, save running out of electrical energy?

Office 365 and error 30125-28 (404)

The Office 365 instance installed on a student’s laptop showed signs of not being activated and in need of an update. Clicking on any of the small buttons below the ribbon made no difference. Running Office updates manually from “File → Account → Update” gave us an error message: 30125-28 (404).

Running sfc /scannow with elevated rights managed to repair enough of the corruption to allow Office 365 to continue working.

Why are modern “cloud” software so fragile? Why are Dropbox and Google Drive far superior to the equivalent of Microsoft? Why is OneDrive for Business more on the order of OneDrive from Hell?

Cisco Catalyst 9400 Series

Cisco’s Catalyst 9400 Series introduced this summer do look promising, but it’s still missing a few highlights:

  • Complete support for redundant supervisors; unavailable according to the release notes dated July 31, 2017

    The supervisor module (hardware) supports redundancy, but the software does not. The associated route processor redundancy (RPR) and stateful switchover (SSO) features are also currently not supported. Redundacy[sic] in software will be supported in a later release.

  • Multigigabit line card
  • SFP+ line card, and possibly
  • QSFP/QSFP+ line cards
  • Visio stencils for chassis, power supplies, supervisor, and line cards

The release notes and data sheets are unclear on the supervisor’s ability to perform as a mobility agent.

So far the Catalyst 4500E Series seems more developed than the new Catalyst 9400 Series.

Upgrading PHP from 7.0.22 to 7.1.9

I created a shell script which began its simple life as


# Use on first run

# Use on subsequent runs

portupgrade ${FLAGS} lang/php71 lang/php70 || exit

portupgrade ${FLAGS} textproc/php71-ctype      textproc/php70-ctype      || exit
portupgrade ${FLAGS} ftp/php71-curl            ftp/php70-curl            || exit
portupgrade ${FLAGS} textproc/php71-dom        textproc/php70-dom        || exit
portupgrade ${FLAGS} graphics/php71-gd         graphics/php70-gd         || exit
portupgrade ${FLAGS} devel/php71-gettext       devel/php70-gettext       || exit
portupgrade ${FLAGS} security/php71-hash       security/php70-hash       || exit
portupgrade ${FLAGS} converters/php71-iconv    converters/php70-iconv    || exit
portupgrade ${FLAGS} devel/php71-json          devel/php70-json          || exit
portupgrade ${FLAGS} net/php71-ldap            net/php70-ldap            || exit
portupgrade ${FLAGS} converters/php71-mbstring converters/php70-mbstring || exit
portupgrade ${FLAGS} security/php71-mcrypt     security/php70-mcrypt     || exit
portupgrade ${FLAGS} databases/php71-memcache  databases/php70-memcache  || exit
portupgrade ${FLAGS} www/php71-opcache         www/php70-opcache         || exit
portupgrade ${FLAGS} security/php71-openssl    security/php70-openssl    || exit
portupgrade ${FLAGS} databases/php71-pdo       databases/php70-pdo       || exit
portupgrade ${FLAGS} databases/php71-pdo_pgsql databases/php70-pdo_pgsql || exit
portupgrade ${FLAGS} databases/php71-pgsql     databases/php70-pgsql     || exit
portupgrade ${FLAGS} www/php71-session         www/php70-session         || exit
portupgrade ${FLAGS} textproc/php71-simplexml  textproc/php70-simplexml  || exit
portupgrade ${FLAGS} net/php71-soap            net/php70-soap            || exit
portupgrade ${FLAGS} net/php71-sockets         net/php70-sockets         || exit
portupgrade ${FLAGS} databases/php71-sqlite3   databases/php70-sqlite3   || exit
portupgrade ${FLAGS} textproc/php71-wddx       textproc/php70-wddx       || exit
portupgrade ${FLAGS} textproc/php71-xml        textproc/php70-xml        || exit
portupgrade ${FLAGS} archivers/php71-zlib      archivers/php70-zlib      || exit

portupgrade ${FLAGS} www/mod_php71 www/mod_php70 || exit

After running the script for a second time and a third time, etc, the script was successively changed to:


# Use on first run

# Use on subsequent runs

#portupgrade ${FLAGS} lang/php71 lang/php70 || exit

#portupgrade ${FLAGS} textproc/php71-ctype      textproc/php70-ctype      || exit
#portupgrade ${FLAGS} ftp/php71-curl            ftp/php70-curl            || exit
#portupgrade ${FLAGS} textproc/php71-dom        textproc/php70-dom        || exit
#portupgrade ${FLAGS} graphics/php71-gd         graphics/php70-gd         || exit
#portupgrade ${FLAGS} devel/php71-gettext       devel/php70-gettext       || exit
#portupgrade ${FLAGS} security/php71-hash       security/php70-hash       || exit
#portupgrade ${FLAGS} converters/php71-iconv    converters/php70-iconv    || exit
#portupgrade ${FLAGS} devel/php71-json          devel/php70-json          || exit
#portupgrade ${FLAGS} net/php71-ldap            net/php70-ldap            || exit
#portupgrade ${FLAGS} converters/php71-mbstring converters/php70-mbstring || exit
#portupgrade ${FLAGS} security/php71-mcrypt     security/php70-mcrypt     || exit

#portupgrade ${FLAGS} www/php71-session         www/php70-session         || exit
#portupgrade ${FLAGS} archivers/php71-zlib      archivers/php70-zlib      || exit
#portupgrade ${FLAGS} databases/php71-memcache  databases/php70-memcache  || exit

#portupgrade ${FLAGS} www/php71-opcache         www/php70-opcache         || exit
#portupgrade ${FLAGS} security/php71-openssl    security/php70-openssl    || exit
#portupgrade ${FLAGS} databases/php71-pdo       databases/php70-pdo       || exit
#portupgrade ${FLAGS} databases/php71-pdo_pgsql databases/php70-pdo_pgsql || exit
#portupgrade ${FLAGS} databases/php71-pgsql     databases/php70-pgsql     || exit
#portupgrade ${FLAGS} textproc/php71-simplexml  textproc/php70-simplexml  || exit
#portupgrade ${FLAGS} net/php71-soap            net/php70-soap            || exit
#portupgrade ${FLAGS} net/php71-sockets         net/php70-sockets         || exit
#portupgrade ${FLAGS} databases/php71-sqlite3   databases/php70-sqlite3   || exit

portupgrade ${FLAGS} textproc/php71-xml        textproc/php70-xml        || exit
portupgrade ${FLAGS} textproc/php71-wddx       textproc/php70-wddx       || exit

portupgrade ${FLAGS} www/mod_php71 www/mod_php70 || exit

Restart Apache using service apache24 restart.

In the end, PHP 7.0.22 got upgraded to PHP 7.1.9. All is well.

Revit 2018.1 and Licensing System Error 1

A student experienced Revit 2018.1 giving him this rather useless error message:

Licensing System Error 1

After Googling for a solution, we installed/repaired all the Visual C++ runtimes we could find in 3rdParty\x64\VCRedist and in 3rdParty\x86\VCRedist from the Revit 2018 distribution.


Shame on lazy developers not willing to code reasonable error messages explaning what the program attemped to do with what.

GNU style error messages is a lot better than nonsense words. E.g.:

sourcefile.c: lineno: open("/some/file") = -1, errno = 2 (No such file or directory)

Update 2017-09-05:

Today I had the opportunity to examine another case of “Licensing System Error 1”. This time I installed 3rdParty\x86\VCRedist\2005\vcredist_x86.exe only. As far as I can tell, Visual C++ 2005 Runtime x86 wasn’t installed at all prior to my actions.

Revit 2018.1 and GeForce GTX 1050 Ti

Yesterday, a student installed Autodesk Revit 2018 on his Windows 10 x64 laptop. He then upgraded to Revit 2018.1. After entering the licensing details, Revit crashed. Installing the latest drivers from nVidia, currently at version 385.41, and rebooting the laptop saved us from any more grief.

Yet another technical oriented blog, more or less