Solved: no iKVM64 in java.library.path on SuperMicro IP KVM

I recently purchased a Super Micro X7SPA-HF-D525 motherboard, and was excited to try out the IP-KVM feature. While I was able to log into the web interface fine, launching the console redirection java webapplet partially proceeded, but eventually failed for me with an error no iKVM64 in java.library.path. I was able to experiment a bit and developed a patch (below) for the launch.jnlp file served for the iKVM applet that enabled this to run on my system (i.e. downloaded the launch.jnlp, patched it, then ran with javaws launch.jnlp). When run without the patch, Java fails to download liblinux_x86_64.jar for me, because it only tries the following two URLs, which don’t contain the relevant file: https://192.168.0.207:443/liblinux_x86_64.jar?version-id=1.0.3 and https://192.168.0.207:443/liblinux_x86_64.jar (while the actual path is something like /liblinux_x86_64__V1.0.3.jar.pack.gz).

I did contact SuperMicro support with a patch and request that they incorporate it into a future BMC release, but I’m not holding my breath. I would also like to note that using the standalone Java SuperMicro IPMI viewer also worked to launch the remote console viewer.

  1. — supermicro-console-original.jnlp    2011-09-29 23:34:33.867239932 -0500
  2. +++ supermicro-console.jnlp     2011-09-29 23:35:20.928385663 -0500
  3. @@ -18,29 +18,45 @@
  4.  
  5.    <resources os="Windows" arch="x86">
  6.      <nativelib href="libwin_x86.jar" download="eager" version="1.0.3"/>
  7. +    <property name="jnlp.packEnabled" value="true"/>
  8. +    <property name="jnlp.versionEnabled" value="true"/>
  9.    </resources>
  10.    <resources os="Windows" arch="x86_64">
  11.      <nativelib href="libwin_x86_64.jar" download="eager" version="1.0.3"/>
  12. +    <property name="jnlp.packEnabled" value="true"/>
  13. +    <property name="jnlp.versionEnabled" value="true"/>
  14.    </resources>
  15.    <resources os="Windows" arch="amd64">
  16.      <nativelib href="libwin_x86_64.jar" download="eager" version="1.0.3"/>
  17. +    <property name="jnlp.packEnabled" value="true"/>
  18. +    <property name="jnlp.versionEnabled" value="true"/>
  19.    </resources>
  20.  
  21.    <resources os="Linux" arch="i386">
  22.      <nativelib href="liblinux_x86.jar" download="eager" version="1.0.3"/>
  23. +    <property name="jnlp.packEnabled" value="true"/>
  24. +    <property name="jnlp.versionEnabled" value="true"/>
  25.    </resources>
  26.    <resources os="Linux" arch="x86">
  27.      <nativelib href="liblinux_x86.jar" download="eager" version="1.0.3"/>
  28. +    <property name="jnlp.packEnabled" value="true"/>
  29. +    <property name="jnlp.versionEnabled" value="true"/>
  30.    </resources>
  31.    <resources os="Linux" arch="x86_64">
  32.      <nativelib href="liblinux_x86_64.jar" download="eager" version="1.0.3"/>
  33. +    <property name="jnlp.packEnabled" value="true"/>
  34. +    <property name="jnlp.versionEnabled" value="true"/>
  35.    </resources>
  36.    <resources os="Linux" arch="amd64">
  37.      <nativelib href="liblinux_x86_64.jar" download="eager" version="1.0.3"/>
  38. +    <property name="jnlp.packEnabled" value="true"/>
  39. +    <property name="jnlp.versionEnabled" value="true"/>
  40.    </resources>
  41.  
  42.    <resources os="Mac OS X" arch="x86_64">
  43.      <nativelib href="libmac_x86_64.jar" download="eager" version="1.0.3"/>
  44. +    <property name="jnlp.packEnabled" value="true"/>
  45. +    <property name="jnlp.versionEnabled" value="true"/>
  46.    </resources>
  47.  
  48.    <application -desc main-class="tw.com.aten.ikvm.KVMMain"></application>
Tags: ,

16 Responses to “Solved: no iKVM64 in java.library.path on SuperMicro IP KVM”

  1. Valery Says:

    Hello David!

    I have the same problem with my Supermicro system (built on XDTL-iF, CentOS 6.2). I followed your solution and “javaws launch.jnlp” doesn’t give me “no iKVM64…” error now, but I am getting “Authentication failed” error. Please forgive my ignorance (I have no sysadmin skills, just run Linux as a regular user at home), but can you help me to find out what I need to do in order to fix this “Authentication failed” error”?

    Thanks in advance!

  2. p14nd4 Says:

    Hi Valery!
    I think I might have run into that issue as well. If it’s the same thing I’m thinking of, I tracked it down to the section of the file at the bottom containing

    <application-desc main-class="tw.com.aten.ikvm.KVMMain">
        <argument>192.168.0.4</argument>
        <argument>some long string of letters</argument>
        <argument>some long string of letters</argument>

    I believe that long string of letters gets generated/updated every so often, and needs to be the same as what the server expects. So, that meant it was necessary for me to re-download the launch.jnlp file, and copy those updated strings into my patched version to run successfully. That became rather annoying, so I’ve mostly switched to using the standalone Java SuperMicro IPMI viewer I mentioned, at least when I’m at my home desktop. Hopefully SuperMicro (or rather, whoever makes the iKVM for them) accepts this patch and releases a firmware update so no manual intervention is needed.

  3. yakupm Says:

    Hi David,
    Thanks for the work on this. I understand the patch but how do use it? I can log into a server via iKVM but how do I get it to use the patched launch.jnlp file when I click Launch Console from Console Redirection? It always uses a new launch-X.jnlp file where X is an incremented number?

    Thanks again,
    yakupm

  4. p14nd4 Says:

    Unfortunately, we’re at the mercy of the vendor to accept this patch “upstream” before we have a seamless solution. (I do encourage you to bug the vendor to accept this patch!) To use this patch yourself, you’ll have to download the .jnlp file each time, patch it, and manually launch the patched file (e.g. from the command line).

    If you were really determined to make an automated solution and have another webserver on your network, you could probably script something up (e.g. in PHP) to fetch the .jnlp file, patch it, and serve you the patched version all in-stream, but that’s beyond my needs. Good luck!

  5. yakupm Says:

    Good news – I upgraded IPMI firmware on the SuperMicro servers I use (X8SIL-F) and the 64 bit problem is solved. iKVM works once more. I’m running ubuntu 10.04 servers and upgraded from IPMI 2.50 to 2.60. Here’s the link to the firmware downloads:
    http://supermicro.com/support/bios/firmware0.aspx

    Hope that helps someone else.
    yakupm

  6. Wolfram Schlich Says:

    It’s still unfixed in SMT_250.bin for the X8DTU-LN4 :(

  7. tpo Says:

    Woah, thanks for the workaround, which made it possible for me to fix our servers. *Many* thanks.

  8. Peter DeGregorio Says:

    Thanks for this info. For me, a temporary work-around was to use a VM with IE and Java 6 (latest Java 6 as of 11/8/12 … 35?). Permanent (hopefully) fix was to update IPMI firmware from 2.03 to 2.66.

  9. BM Says:

    I installed Oracle Java 7 instead of openjdk and it seems to work now. It might also have something to do with the BMC firmware upgrade I did (the board is supermicro X9SCM), but openjdk/icedtea still gives me the same error so I don’t think it was that.

  10. Bart Lute Says:

    Works like a charm on my Ubuntu 12.04 Desktop on a SuperMicro IPMI with firmware 01.12. Thanks!

  11. Klaus Says:

    Thanks for info – great!

  12. Whit Says:

    How do you download launch.jnlp? Lot’s of blogs have picked up your fix, but none of them I find mention how that to do that step. Thanks.

  13. p14nd4 Says:

    For me, the launch.jnlp file is obtained by logging into the web interface of the BMC through a web browser (e.g. http://192.168.0.4/), Remote Control -> Launch SOL. I can’t see an easy way to generate a reusable direct URL to that file.

  14. Whit Says:

    Okay, using Chrome it saves that file, with a random name, in ~/Downloads. Those lines you listed are already in it, so it must be a more recent version of the firmware. Then javaws can run it, as long as (this being the most current Java which prefers signed applets) the security settings have been relaxed to “Medium” through Java’s ControlPanel program first. Then if I symlink the javaws from the hand-install Java to /usr/bin/javaws, Chrome can allow me to click on the downloaded file to get the console. Chrome it seems won’t just transparently open it short of downloading then clicking on the file. (Meanwhile my Firefox has stopped running JavaScript while playing with this stuff – not sure what’s wrong there yet, just broken.)

    Thanks. Your fix wasn’t exactly the one I needed. But it was suggestive and useful.

  15. Anonymous Says:

    You can just replace those two arguments with your username and password that you used to log in before with your web browser:

    192.168.0.4
    some long string of letters
    some long string of letters

    This:

    192.168.0.4
    username
    password

    It worked for me.

  16. guo xiaokang Says:

    Your solution is perfect!!!
    Thanks!

Leave a Reply