Running Keysight ADS on Fedora 42
As I recently detailed, I've converted to Linux and specifically Fedora 42. While I've loved the experience so far, it has come with it's challenges, and today I finally solved one of the big ones!
For some school work, I have to run Keysight's Advanced Design System simulation software - which is only supported by Windows and Red Hat Enterprise. I had thought I might be able to get it running on bare metal, since the license is linked to my MAC Address I felt that was preferable, but I ran into too many issues.
Eventually, I settled with running it in a container and doing "host" networking - and I gave Podman its first shot. After sorting out some display issues and the multitude of packages it required to be installed, I finally got it working. So without further ado, here's the steps I went through that should get you going with ADS!
- Download the .tar file of the Linux install from Keysight, and run ./SETUP.SH on the host machine.
- Download your license file (
.lic
) and put it in the folder of the ADS install (location doesn't matter, as long as it is accessible). - In the same folder as your ADS install, in the root folder, create a Dockerfile. The one I use is at the bottom of this post, or the latest version can be found in this gist.
- Update the environment variables and volume to match your system. Specifically, update the volume to match the exact location of your install (a path that can be accessed anywhere, so likely ~/something), and the environment variable ADS_LICENSE_FILE to the path of your .lic file from the previous step.
- Build the container with
podman build -t <image name> .
in the same folder as your Docker file. - Run the following command (edit as needed):
podman run -it --rm --network=host --user=root --security-opt label=disable <image name>
- For convenience sake, I've thrown this command into a shell script so I don't have to remember it. So I just go to my ADS install folder and type
./run-ads.sh
!
- For convenience sake, I've thrown this command into a shell script so I don't have to remember it. So I just go to my ADS install folder and type
- In the container, do
cd /opt/ads/bin && . ./ads
, let it process your license file, and close the app. Control-C in the terminal window after you've closed the GUI. - Lastly, run
. ./ads
again and it should show you what you can run!
This is nowhere near a comprehensive guide, but it beats the "tutorial" video on YouTube that's not a real tutorial. I'll also just mention - I have nothing to do with Keysight, and am not responsible if this method causes you issue. This is what works for me and my work, but may not work for you and your specific system and requirements.
Hopefully this helps at least one person out there!
v1 Dockerfile as promised:
FROM ubuntu:20.04
ENV DISPLAY=$DISPLAY
ENV HPEESOF_DIR=/opt/ads
ENV LD_LIBRARY_PATH=/opt/ads/lib/linux_x86_64:$LD_LIBRARY_PATH
ENV PATH=/opt/ads/bin:$PATH
ENV ADS_LICENSE_FILE=<TODO: PATH TO YOUR LICENSE FILE HERE>
RUN ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
echo "Etc/UTC" > /etc/timezone
RUN apt update && apt install -y \
ksh \
libx11-6 libxext6 libxt6 libxmu6 libxi6 \
libxrender1 libxrandr2 libxinerama1 libxcursor1 \
libxdamage1 libxfixes3 libxft2 libxss1 libxtst6 \
libxcomposite1 libxpm4 libxaw7 libxv1 libxxf86vm1 \
libgl1-mesa-glx libglu1-mesa \
qt5-default libqt5gui5 libqt5widgets5 libqt5x11extras5 \
libxcb1 libxcb-icccm4 libxcb-image0 libxcb-shm0 \
libxcb-util1 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-res0 libxcb-ewmh2 libxcb-composite0 \
libxkbcommon0 libxkbcommon-x11-0 \
dbus-x11 x11-utils \
lsb-core lsb-release
VOLUME <TODO:PATH TO YOUR ADS INSTALL HERE>:/opt/ads:Z
VOLUME /tmp/.X11-unix:/tmp/.X11-unix:rw
CMD ["bash", "-c", "cd /opt/ads/bin && . ./ads; exec bash"]```