Skip to content

Instantly share code, notes, and snippets.

@xbb
Last active Sep 29, 2022
Embed
What would you like to do?
IDRAC6 Virtual Console Launcher
Use this as an example on how to start the virtual console without the need of Java Web Start or accessing it from the web interface.
You can use the user and password that you use for the web interface.
You need an old JRE... I used 1.7.0_80 from the Server JRE package, also I have tested successfully 1.7.0_79 with MacOS.
You don't need to install it, just extract it or copy the files in "jre" folder.
Open the viewer.jnlp file that you get by launching the virtual console from the web interface with a text editor.
Note the urls to the jar files. Download the main jar file avctKVM.jar and the libs for your operating system and architecture.
Extract the dlls (.so Linux, .jnilib MacOS) from the jar libs.
If you don't see the MacOS libs in the file make sure you download it from MacOS.
Edit the bat/sh file according to your needs.
The file structure should look like this:
start-virtual-console.bat (.sh if Linux/MacOS)
avctKVM.jar
jre/<jre home here>
lib/avctKVMIO.dll (.so if Linux, .jnilib if MacOS)
lib/avmWinLib.dll (.so if Linux, .jnilib if MacOS)
@echo off
set /P drachost="Host: "
set /p dracuser="Username: "
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set dracpwd=%%p
.\jre\bin\java -cp avctKVM.jar -Djava.library.path=.\lib com.avocent.idrac.kvm.Main ip=%drachost% kmport=5900 vport=5900 user=%dracuser% passwd=%dracpwd% apcp=1 version=2 vmprivilege=true "helpurl=https://%drachost%:443/help/contents.html"
#!/bin/bash
echo -n 'Host: '
read drachost
echo -n 'Username: '
read dracuser
echo -n 'Password: '
read -s dracpwd
echo
./jre/bin/java -cp avctKVM.jar -Djava.library.path=./lib com.avocent.idrac.kvm.Main ip=$drachost kmport=5900 vport=5900 user=$dracuser passwd=$dracpwd apcp=1 version=2 vmprivilege=true "helpurl=https://$drachost:443/help/contents.html"
@greecemunky
Copy link

greecemunky commented May 11, 2022

Does anyone have success getting the "Virtual Media" to work for iDrac6? I can connect and get keyboard input and video, but when I tap "Virtual Media -> Launch Virtual Media", I get an error about "The Virtual Media native library cannot be loaded". If someone has it working, can they share the exact version of JRE they have?

This may occur when library file avctKVMIO.dll isn't found or loaded properly e.g. attempting to use 32-bit library with 64-bit JRE. I just tested using both jre-8u212-windows-i586 and jre-8u212-windows-x64 on Windows 10 (pulling down 32-bit and 64-bit library files respectfully), and clicking Virtual Media -> Launch Virtual Media within an iDRAC6 session opens without error for me.

I've been working on a script based on https://gist.github.com/xbb/4fd651c2493ad9284dbcb827dc8886d6?permalink_comment_id=3428052#gistcomment-3428052 that supports both 32-bit and 64-bit Java and tries to detect the iDRAC's version to know which arguments to pass to avctKVM.jar. It's a mess right now and not fully tested, but once it's somewhat cleaned up I will post it here.

@cepm-nate
Copy link

cepm-nate commented May 20, 2022

I got it to work:

  • Installed JRE 7 from Oracle
  • Viewed the viewer.jnlp file to get the right .jar files
  • Downloaded files manually, renamed to .zip, and extracted them into the proper folder. (avctKVM.jar goes in same folder as console.bat, other .dlls go into /lib folder)
  • Edited the console.bat to include IP and username instead of prompting me each time.

The tricky part was trying various platform .jar files till I found one that worked. As @greecemunky said, it was just a matter of finding the right one.

@ardabeyazoglu
Copy link

ardabeyazoglu commented Jul 24, 2022

On mac osx big sur, i couldnt manage to make it work with all the instructions properly done and java.security file patched. I downloaded and used jre1.7 as mentioned before. I commented disabledAlgorithms and left it empty, neither way worked as well. I can use the same script to connect on windows using jre1.6.

I still get the following error. Did anybody manage to solve it in big sur+ ?

07/24/2022 11:24:38:487:  User login response: 3
java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
	at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:377)
	at sun.security.ssl.OutputRecord.write(OutputRecord.java:363)
	at sun.security.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:837)
	at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:808)
	at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
	at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
	at java.io.DataOutputStream.flush(DataOutputStream.java:123)
	at com.avocent.kvm.c.d.g.b(Unknown Source)
	at com.avocent.kvm.c.d.i.run(Unknown Source)

And here is the command:

sudo spctl --master-disable

./jre1.7-mac/Contents/Home/bin/java -cp avctKVM.jar -Djava.library.path=./lib com.avocent.idrac.kvm.Main ip="10.0.0.100" kmport=5900 vport=5900 user=*** passwd="****" apcp=1 version=2 reconnect=2 vmprivilege=true "helpurl=https://10.0.0.100:443/help/contents.html"

@jimfrench
Copy link

jimfrench commented Jul 24, 2022

Hi
I'm not on macos but could this be just working directory ambiguity with the lib directory,, i.e.

sudo spctl --master-disable
cd ./jre1.7-mac/Contents/Home

./bin/java -cp avctKVM.jar -Djava.library.path=./lib com.avocent.idrac.kvm.Main ip="10.0.0.100" kmport=5900 vport=5900 user=*** passwd="****" apcp=1 version=2 reconnect=2 vmprivilege=true "helpurl=https://10.0.0.100:443/help/contents.html"

Alternativey fully qualified lib path

sudo spctl --master-disable

./jre1.7-mac/Contents/Home/bin/java -cp avctKVM.jar -Djava.library.path=./jre1.7-mac/Contents/Home/lib com.avocent.idrac.kvm.Main ip="10.0.0.100" kmport=5900 vport=5900 user=*** passwd="****" apcp=1 version=2 reconnect=2 vmprivilege=true "helpurl=https://10.0.0.100:443/help/contents.html"

Apologies if already checked this is correct directory

@ardabeyazoglu
Copy link

ardabeyazoglu commented Jul 24, 2022

@jimfrench I havent tried this yet but i ll check if it works. Though, I don't think this would be the cause because it works until tls connection phase. Thanks for the advice anyway.

@jimfrench
Copy link

jimfrench commented Jul 24, 2022

@ardabeyazoglu Yes I should have explained my reasoning, it could have been using libraries from the wrong java version, but you might be correct in that it probably wouldn't get that far if so, it would error out sooner than during the connection. Hope someone else can step in good luck.

@alatas
Copy link

alatas commented Sep 19, 2022

I tried many different combinations, java versions, etc., and finally discovered that iDRAC 6 is compatible with IE v8 on Win 7 SP1. I downloaded Win 7 SP1 and installed it on a virtual machine. It installs its ActiveX to IE 8 on the first run. Then I put the website on trusted sites. and voila!

@jimfrench
Copy link

jimfrench commented Sep 19, 2022

:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment