I'm bored at home, so I will upgrade firmware of my router, my NAS, etc.

I upgraded my router with the latest OpenWrt 19.07.1 and installed some necessary softwares, for instance Shadowsocks, ChinaDNS, DNS-forwarder, etc.

This post will cover my NAS motherboard BMC and BIOS upgrade process.

My NAS motherboard use 00.18.00 BMC with 3.30 BIOS, there was some bugs I think on this version BMC, but it's very stable with NAS.

I found ASRock released new BMC and BIOS, 00.28.00 BMC and 3.50 BIOS. I'm not interested  in BIOS upgrade since I never got issues about CPU, memory, etc. This upgrade improved M.2 compatibility(not used now), system stability(not sure what's that), Intel Spectre & Meltdown bug(not fix, just improve?).

The BMC new release improved Java compatibility, I think that's a great news since this motherboard provides remote control functions, just like the Dell's iDRAC, I could connect the motherboard and control all things like I connect a mouse, keyboard, monitor on the server, and all these could through network, but the BMC software is out-of-date, and Java had improved many security policy, for instance deprecate some encryption method, etc. If you use latest Java you will be blocked as BMC use a very old Java application configuration and encryption methods.

Upgrade process is simple if you use IE11, not Chrome or Firefox, as the upload button will not show on Chrome or Firefox, if you can't upload firmware, you could do nothing, and when you are requested uploading, anyone could not access motherboard again until you finish upgrading...

After I upgraded BMC, I can't connect remote console, I think maybe my Java version is too high (8u241), so I downgraded to 8u121, and 8u91, doesn't work, and I tried Windows or MacOS.

Today I found my MacOS default Java version is 8u241, even I installed 8u121. I'm not sure which Java is used when I click JNLP file by double click, but when I use command line, I know the Java version is system default, so I setup JAVA_HOME via /usr/libexec/java_home -v 1.8.0_121 retrieve the right Java home directory.

I found the most stable BMC version is 00.18.00, when I installed 00.28.00, sometimes my NAS reports the ipmi can not access, so I think the ipmi service is not available.

And I recommended upgrade BMC without any configuration preserve, just configure it again.

After upgraded BMC, change SSL certificate by generating or uploading your self signed, I tried both, I'm not sure which method is useful, current I use self signed RSA (2048 bits) cert, remember upload on IE11.

I recommended HTTPS end-point, not HTTP, because I captured packets via wireshark, I found the Java application (named jviewer) downloads all jars via http, and then connect HTTPS, I don't know why it will connect HTTPS. After I use HTTPS the success probability increased!

If jviewer connect motherboard successfully, you will find some functions could be use, e.g. power off, power on, etc. That's not enough, unless you could see OS console text or the virtual media dialog can be display.

When I click connect virtual media, I found some exception on Java console:

Java.lang.UnsatisfiedLinkError: com.ami.iusb.FloppyRedir.GetKeyboardName()Ljava/lang/String;
    at com.ami.iusb.FloppyRedir.GetKeyboardName(Native Method)
    at com.ami.iusb.FloppyRedir.ReadKeybdType(FloppyRedir.java:459)
    at com.ami.kvm.jviewer.hid.KVMClient.get_keybd_type(KVMClient.java:735)
    at com.ami.kvm.jviewer.hid.KVMClient.startRedirection(KVMClient.java:727)
    at com.ami.kvm.jviewer.gui.JViewerApp.OnVideoStartRedirection(JViewerApp.java:466)
    at com.ami.kvm.jviewer.gui.JViewerApp.OnConnectToServer(JViewerApp.java:449)
    at com.ami.kvm.jviewer.JViewer.main(JViewer.java:110)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)

How to open Java console? Open Java Control Panel, navigate to Advanced, on the Java console section, tick Show console.

I found someone gave a solution, uninstall XQuartz (if installed), install Java, install XQuartz. I just installed XQuartz and click virtual media, it works for me!

Last

I setup sysadmin user's password on web, I could ssh motherboard with sysadmin, this is the root user of BMC, I could review logs, start services, reboot, etc. The admin user is an unprivileged user of BMC.