Corsair AOI resetting randomly with HWiNFO running

For the past two weeks I’ve had my Corsair iCUE H150i RGB PRO XT resets randomly. This happened when I swapped my Nvidia GTX 1080 for an RTX 3080Ti.

So much went wrong for no reason that I was questioning my sanity and how good I build computers.

Conflicting monitoring

It happens that I also run HWiNFO to monitor my hardware, not that I need to but just because I want to. The thing is that my AOI started reset itself and iCUE would break randomly, under load or while idling.

There was no pattern, I thought the problem would be coming from the cooler itself or the motherboard.

It turns out that HWiNFO might conflict on rare occasions with iCUE, Corsair and Asetek coolers. How do I know it might be that?
I didn’t run HWiNFO since yesterday and my AOI didn’t reset once or default to hardware RGB.

Setting up HWiNFO to not conflict with the AOI

Honestly when it comes to making two pieces of software not conflict all I can imagine doing is just turning off one of them. However this isn’t a solution for Corsair iCUE and my cooler still needs to work with the curve I setup.

I’ve started running OCCT to diagnose some stuff on my PC and found in the settings some checkbox for Corsair stuff. I thought to myself that HWiNFO might have one too.

All I need is to uncheck this box and I should be good to go.

Corsair iCUE might still fail

I like Corsair but iCUE can be garbage sometimes and this isn’t acceptable when the software is in charge of interacting with cooling.

Sometimes the sensors will no longer update in the dashboard and in the cooling settings, thus making it impossible to follow the temperatures and fan speed.
When this happens all I need to do is restart the iCUE service but I feel like it shouldn’t hang and I can’t help but be concerned about it.

Now the good news is that I no longer need to RMA the cooler. I can focus on other problems.

The cheating problem of Final Fantasy 14

It’s weird that we can disagree on what’s cheating and what’s not sometimes, so I guess this is just my opinion.

Following a discussion I found on reddit and after listening on Discord to someone justifying using those third party tools to know the target’s moves in advance and even getting “help”, I can’t really believe that people are defending the use of those tools.

While some do claim that it improves the accessibility, I think that it solves the problem in a bad way.

Let’s talk about one tool in particular first.

What is Cacbot?

As described on GitHub it’s an ACT overlay that provides raiding tools for Final Fantasy XIV. Presented like that it doesn’t seem like much until you start looking at the screenshot below:

Cacbot taken from a YouTube video

On the middle of the screen there’s a notification and an order to avoid the next action the boss will do: Get out of front.

It can’t be made more obvious than that. Notifications and automatique callouts are accompanied with a bell sound or whatever is setup.

On the top left we have a timeline of actions:

These actions have a countdown on the right so you know what will happen and what to expect.
It does other things too and it’s not the only kind of tool that I would call a cheat.

The game’s stance on third party tools

A post was made on the Lodestone about third part tools. Basically third party tools are strictly prohibited, they say they will suspend and permanently ban repeat offenses. Do they really ?

Well let’s say that they did ask players to not push in this video:

In the case of ACT, it permits users to graph the DPS and other numbers, how different is that to typing the numbers manually on a calculator?
Yoshida argues that there’s no end to such a conversation and he’s right.
The whole video is interesting on its own so check it out.

The part where basically players shouldn’t push it is during the harassment part. Players shouldn’t be judging and discussing other players numbers. Player shouldn’t discriminate based on numbers shown in a third party tool.

On my part I can’t defend parsing because at some point we all meet a very toxic player telling you how to optimize your damage output. If the analytical tools like DPS meters were used only on a personal level, with no DPS shaming, then I don’t think these tools would be an issue.
Some great analytical tools exist such as xivanalysis that helps you improve your rotation. But like the music says one brings shadow, one brings light

But what about the Cacbot tool mentioned above? Well to me that falls in the category of cheats since it appears to be able to display a timeline of actions that a target will take.
This does affect my experience too and I do not consent playing with cheaters.

No running anticheat

Final Fantasy XIV has taken the approach of not running a classic anti-cheat with the game and that’s ballzy. Any other game would be running along with some kernel driver monitoring the game or some sort of other implementation just to make sure the players are playing by the rules.

Not having to deal with the down sides of an anti-cheat is great as it doesn’t impact the game’s performance.

Conclusion

Cheaters sicken me.

If you need a third party tool to do the callouts or you do callouts based on that tool then you shouldn’t be bothering with the game. Especially if you suck at it with cheats.

Don’t defend the use of the Cacbot, it’s like having a wallhack in FPS. You know what’s coming. You know how it’s coming.

And don’t you dare talk to me about how you hate spoilers if you have a precise timeline for each and every action the boss is going to do. You are the one spoiling the fight and you are affecting my game with your cheats.

Discord animated voice PNGs

When building your streaming overlay you might want to add the other users that are in your current vocal chat but you want to customize a bit the way it’s displayed.

Discord doesn’t offer any of those options natively but with OBS Studio it’s possible to use some tricks.

CSS & web knowledge required to understand how to use CSS and how to link images.

Setting up the widget

Nothing really hard here, got to the Stream Kit page for Discord in the overlay section.

Setting up the server and the voice channel to be used will alter the URL so make sure you are using the right channel, but it’s possible to use a personal and private channel to use for PNG VTubing.

In OBS within your scene you need to create a browser source and use the provided link as such (no preview until it’s saved):

This is the basic setup. Next we will need a way to get the user ID on Discord.

Setting up Discord

To be able to get the user IDs we need to enable the developer options within Discord. Go to your settings within Discord and in the advanced tab you’ll find the developer toggle:

Getting the user’s ID is as simple as right clicking a name in the chat and clicking on the Copy ID button:

Customizing the widget

Since the widget is a web page within a web view in OBS Studio it’s easy to customize through CSS. Here’s the code to copied & pasted into the custom CSS text area in the browser source:

/*
To be used with the Voice Widget from the Discord Stream Kit
https://streamkit.discord.com/overlay

Do not hotlink images, please rehost them to avoid stealing
bandwidth and keep control over your images, Imgur is a fine
option for this.

Credits:
- Generator by kukushie: https://www.reddit.com/r/VirtualYoutubers/comments/k4q8jw/css_generator_for_discord_reactionary_images_that/
- Edited & improved by SenpaiSilver: https://twitter.com/SenpaiSilver

Please keep the credit chain when making & publishing your changes.
*/

@keyframes speak-now {
    0%  { bottom:0px; }
    15% { bottom:15px; }
    30% { bottom:0px; }
}

body {
    background-color: rgba(0, 0, 0, 0);
    margin: 0px auto;
    overflow: hidden;
}

/* Aligning everything on the same line */
.voice-state {
    display: inline-block;
}

/* Images must be square, change height for it to be scaled
back to 128px wide, or else deal with bad alignments */
.avatar {
    height: 128px !important;
    width: auto !important;
    border-radius: 0% !important;
    filter: brightness(50%);
}

.speaking {
    border-color: rgba(0,0,0,0) !important;
    position: relative;
    animation-name: speak-now;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    filter: brightness(100%);
}

/* Hiding names because the discord parameter on the streamkit
doesn't seem to be taken into account correctly */
.name { display: none; }

/* Default avatar */
.avatar {
    content: url("https://link-to-image.png");
}

/* Users go here: */

.avatar[data-reactid*="new"] {
    content: url("https://link-to-image.png");
}
.speaking[data-reactid*="new"] {
    content: url("https://link-to-image.png");
}

The result is an overlay, where the images change went talking in some way:

  • Brightness is increased;
  • The image is bumped 15 pixels higher;
  • The image changes depending if an image is set for talking only.

Thanks to Malidoudou for the output for her streams.

Explaining some parts of the code further

It’s important to understand some parts of the properly before running this code, even though it’s just CSS.

First of all you cannot trust users, I recommend using a default image for users that are not part of the CSS to avoid displaying potentially unwanted profile pictures:

/* Default avatar */
.avatar {
    content:url("https://link-to-image.png");
}

This code will replace the img tag’s content with the provided image for everyone that connects to the voice channel. After that it will be possible to set below the specific users with their IDs:

.avatar[data-reactid*="user discord id"] {
    content:url("https://link-to-image.png");
}
.speaking[data-reactid*="user discord id"] {
    content:url("https://link-to-image.png");
}

When we override .avatar we are already setting the default image for the user, by specifying that the attribute data-reactid contains a certain string we can refine our selector and make it target a specific user ID (since they are unique).

In this case the same applies when .speaking is added to the user .avatar.

If you wish to retain round avatar you will need to tweak the border-radius within the first definition of .avatar.

Possible improvements

Since we are dealing with images, animated GIFs are an option and could be used to display an animation with transparency.

If the GIF format doesn’t provide enough colors then it’s possible to fallback to something like the animated WebP or APNG format.

Credits, warranties & notes

This code is based on a generator found on reddit, I’ve changed it to make it work better and fit my own settings. If you modify the code please keep the credit list and add yourself to it.

The code is provided as is and might break one day if the Stream Kit is updated.

This code can be used for son PNG VTubing too.

Fix ethernet interface following ASRock B450M-HDV’s UEFI update on Linux

I own an ASRock B450M-HDV for my home server, it was cheap. It’s currently paired with a Ryzen 3 2200G, but will be getting a Ryzen 5 5600G very quickly.

But to get a more recent CPU I need to update my UEFI from version 1.20 to 4.40. This is great because this means that my home server built cheap can properly evolve and extend its lifespan by a bit.

Symptom

After an UEFI update I always login and attempt to ping 8.8.8.8 but it wouldn’t reach.

No entry for the NIC exists within the UEFI but it is detected:

senpaisilver:~$ sudo lshw -C network
  *-network
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:07:00.0
       logical name: enp7s0
       version: 15
       serial: 01:23:45:67:89:AB
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 duplex=full firmware=rtl8168h-2_0.0.2 02/26/15 ip=192.168.1.3 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
       resources: irq:36 ioport:f000(size=256) memory:fcd04000-fcd04fff memory:fcd00000-fcd03fff

Resolving the solution

This is a walk in the part, when querying the NICs I need to get the logical name:

senpaisilver:~$ sudo lshw -C network | grep "logical name:"
logical name: enp7s0

In my case I’m interested in the enp7s0, this will be the string I will have to update in my netplan. In my case there’s only one netplan /etc/netplan/ which is 50-cloud-init.yaml (may differ on other installations).

In that file we need to copy the logical name in the ethernets section like so:

network:
    ethernets:
        enp7s0:
            dhcp4: true
    version: 2

Save and then run the following commands to enable the new netplan:

sudo netplan generate
sudo netplan apply

If everything works you should be able to reach the internet, otherwise try rebooting.

Why update the CPU?

I’m been having issues with slow encoding and to be honest the Ryzen 3 2200G was a low cost way of getting started, I need more power and I’ll probably update the SSD to a proper NVMe PCI-E 3.0 one if the need arises.

But by the end of the day I need more CPU performance and I’ll be need more RAM too for a PhotoPrism instance too. Maybe it would be a great moment to properly setup a Grafana dashboard too since I already have most of the docker compose file ready.

So much to do… So much to do…

Update 2022/01/08

I received the Ryzen 5 5600G and proceeded to install it, after working for a few minutes the screen would turn off and sleep. The reset and power buttons wouldn’t register at all, the ethernet would cut off meaning I had no other option than to pull the plug (or use the PSU’s switch).

Continue reading Fix ethernet interface following ASRock B450M-HDV’s UEFI update on Linux

Beef PC

It’s upgrade time and starting today I’ll be rocking a new build.

Old parts

My 2017 desktop has some very old parts dating back to 2011 and 2012. Only the GPU dates back to 2017 and I’ve add some SSD drives last year.

The old parts are:

  • Intel i7 3770K @3.50GHz with 4 cores;
  • 4 times 4GB Corsair Vengeance 1866MHz;
  • Gigabyte GTX 1080 8GB (the newest);
  • Asus Sabertooth P67;
  • Cooler Master HAF-X.

It has also two Samsung 860 SATA SSDs and a 2TB Seagate Barracuda spinning rust drive.

New parts

First of all to get started I’m only swapping the CPU (+ cooler), motherboard and RAM. I’ll be adding two NVMe PCI-E 4.0 SSDs to the lot too.

I’m now rocking:

  • AMD Ryzen 9 5900X @3.7/4.8GHz with 12 cores;
  • 2 times 16GB Corsair Vengeance LPX 3600MHz CL18;
  • Asus TUF Gaming X570-PRO;
  • 2 times 1TB Samsung SSD 980 Pro M.2 PCI-E 4.0 NVMe;
  • Be quiet! Silent Base 802;
  • NVidia RTX 3080Ti.

I’m still shaking because of the price and the sheer excitement I’m getting out of building such a beast. More the excitement actually than the price.

The beef PC

Right now it’s what I’d call the beef PC, even though it’s not overpowered GPU wise and the RAM could be increased to 64GB or even 128GB, I love it the way it is.

I know the DDR5 is going to be a thing, probably next year and we are already talking about PCI-E 5.0 but for now I have a good upgrade and it’s worth it.
I could wait but if I did wait what guarantees would I get that my previous hardware would still perform well enough?
Would the jump in performance and possible launch issues be worth it ?

A platform’s maturity counts very much for me. I believe I’m not missing on much right now.

With that said I’m leaving you to the reference that made me call this PC the Beef PC:

Check out 2ManySnacks’ channel, great content, the featured image is part of that video.

Update 13-06-2022

I GOT AN RTX 3080TI NOW!!!!!

Separate your audio streams for streaming on Windows

Streaming and recording video games is something I’ve been into, casually, for years (since 2006). Recording gameplay with audio usually includes all the system audio and this can be a problem.

Recording all system audio issue

Windows, your web browser and the game’s audio will play through the default device. That default device is usually your headphones or your speakers.

OBS and ShadowPlay usually record that default device, this is something we’ll have to change.

Virtual Audio Cable

I’m using Virtual Audio Cable (VAC). You can use the trial version, buy it or use an alternative virtual cable driver, this is all up to you.

Open the Virtual Audio Control Panel as an admin (always) and setup the desired number of lines. Each line will be setup to receive audio from certain apps depending on the usage you want.

I have the main line for gameplay, my Discord line to record people I’m talking to. I also have a third line for miscellaneous things and a fourth that I’m not using.
Ideally I would’ve have set one line specifically for gaming, but Windows 10 being what it is (and standards being what they are) it ain’t going to work like that.

To complete the audio setup I also need to output those lines to something and that something is my headphones. Each output line automatically inputs the sound into a virtual input too, that way you can listen to it.

Basically this is how things go:

  • Outputs:
    1. Headphones;
    2. Line 1: Main output (default output device);
    3. Line 2: Discord output;
    4. Line 3: Misc output.
  • Inputs:
    1. USB Microphone (default input device);
    2. Line 1: Main output mirrored as input into my headphone;
    3. Line 2: Discord output mirrored as input into my headphone;
    4. Line 3: Misc output mirrored as input into my headphone.

Windows 10 doesn’t remember

Like I said previously one problem that forces me to set the line 1 as the default output device is because Windows 10 can’t exactly remember correctly which app is outputting on which device.

This issue could also be the other way around where an app will have a different output selected but still output to the default device, I’m not sure why but answers would be appreciated.

OBS recording

OBS is a great piece of software that permits me to merge lines and split some too! This is perfect for recording gameplay and streaming (at the same time).

First we need to specify that we will be recording several tracks into our ouput in OBS, for that we need to go into the settings: File, then Settings.
From there we go into the Output section and select in Streaming the first audio track as the one we will be using for streaming like so:

As a bonus you can also use a different audio track for the VOD so you can have avoid having Spotify playing in the VOD (and avoid the DMCA).

In recording we need to tick all audio track to enable all audio tracksfor later:

Then of course we need to name them and change the audio bitrate if you desire:

In my case I have everything playing on track 1 since it is the default track.
Track 2 will contain the game audio or the main subject of the video/stream.
Track 3 is my voice, followed by track 4 with voices from Discord.

Having different tracks enables me to control what is output when I record and stream, this way I’m able to make audio commentary when preparing a video and after that replace that commentary with a carefully recorded one, while keeping the gameplay audio without altering it.

To select where what track plays it’s necessary to go into the Edit menu, then Advanced audio properties. Set the different inputs and outputs as you wish in the new window:

Keep the first track checked for all lines, check the other numbers as you need.

Troubleshooting: static/glitch audio

After a while if the computer is not rebooted for days it might happen that the audio fizzles, glitches or becomes static. This isn’t a good experience.

The fix consists in restarting Virtual Audio Cable or the audio service from the control panel (as an admin).

FFXIV: Toggle Gamepad/Mouse mode

I love Final Fantasy XIV. I’ve been playing nothing else than FFXIV since the apocalypse pandemic started.

My setup

I’ve been playing a Monk from the start and have enjoyed it very much, at first I was having a hard time using my combos and to optimize them I must use appropriate positioning. Switching to a gamepad was really helping.

I also play Dancer, Gunbreaker, Dark Knight and Red Mage.

Healer struggles

I’ve been interested in learning how to play as a healer, Astrologian to be more precise, because I want to at least learn the job and be able to at least be good enough for any role. The things is, for healers at least, I can’t spend all day cycling through targets.

Hitting down twice on the D-pad will permit me to target the first tank, all is good until my brain glitches or I hit another direction. I struggle with precise selections with the gamepad and this isn’t good.

Thankfully, FFXIV has great UI customization and macros that will help me:

  • Design a better mouse UI;
  • Toggle the display for hotbars or the crosshotbars (gamepad bars);
  • Switch the UI;
  • Switch classes.

I’ve already played around with macro to make a quick side collapsible menu, but now I need to understand how I can tweak the whole UI with macros.

One setting to rule them all

First of all it’s important to identify how we will interact with the main menu and the best way is to enable the mouse input to avoid having a non clickable main menu that only fits gamepads.

FFXIV: Character Settings > UI > General

We must make sure to be in Mouse Mode Type either by click the toggle on the left top side or in the Main Menu choices.

This is not strictly required but it will make life easier since you cannot interact with the main menu without a gamepad in gamepad mode (big oversight? Please fix this Square).

Two macros for switching

I’ve built two HUDs that will display differently based on my selected input device, the gamepad HUD is less dense on the lower part of my screen while the keyboard/mouse HUD keeps everything important at arm’s length.

Click to enlarge.
The main idea is to have a HUD you are comfortable with. Trial and error is the only way.

Macro: To keyboard

Create a macro with the following:

/hudlayout 3
/hotbar display 2 on
/hotbar display 3 on
/hotbar display 4 on
/crosshotbardisplay off

Macro: To gamepad

Create a macro with the following:

/hudlayout 1
/hotbar display 2 off
/hotbar display 3 off
/hotbar display 4 off
/crosshotbardisplay on

Toggling between the two

You will now need to add both macros to a hotbar, this is up to you to do. Keep in mind that if the game settings window is open the macros might not work well since some commands are disabled.

You can also add these macros to your switch classes macro if you do that. That is what I did.

Assume no changes in Git tracked files

Git is great, I’ll sing its praise until the end of times. Lately I’ve been having some issues with configurations that I don’t want to push and since I’m not the one who made the decision to version certain files I’m not going to remove them or .gitignore them.

Git: assume unchanged

Git is great, I can keep track of a file and assume the local copy is unchanged by updating the index. To assume that a file has not been changed without removing it you will need to use the following command:

git update-index --assume-unchanged <file>

Git: assume changed

Git is still great, it can revert the process and restart tracking changes again with the following command:

git update-index --no-assume-unchanged

Git update-index

The magic happens thanks to git update-index, you can read more about it here: https://git-scm.com/docs/git-update-index