Google Chrome – Crashing and Freezing

Introduction

For a while now I’ve been dealing with general woes while using my beloved Google Chrome. I enjoy Chrome. It’s a great browser and it’s supported by a great team.

With that said, I have been spending a lot of time lately trying to justify why I still use Chrome despite all of the difficulties. Well to name a few reasons: I enjoy the secure content, the modular framework, the nifty features, and the interface is great… but it seems to be always CRASHING.

Granted I do use this particular setup for my sysadmin work, so I have slightly different necessities and software packages installed than your average user, but I tried with all my troubleshooting super powers (google.com) to try and figure out why I couldn’t prevent Chrome from crashing. I reinstalled, turned off all extensions, cleared temp data and Chrome user profile, updated the browser, updated Flash/Java, but nothing worked… I just could not figure out why Chome kept crashing.

But today is a good day.

Issues

Downloads Not Working

The first sign of trouble was when downloads in Chrome would sporadically stop working. I have never had trouble using my browser, EXCEPT for when I noticed that downloads stopped working.

It didn’t happen all the time. I could log into my desktop and start the Chrome process fresh and could be downloading files like when Napster was new. All of a sudden, though,  it would stop working. I could click a download link over and over but nothing would ever happen.

The resulting bad behavior of this came when I tried closing Chrome. It would say that I still had Downloads in queue and to press Ctrl+J to clear them out, but of course there were never any downloads in the queue and even closing Chrome would sometimes leave a lingering processes in the task manager.

Can’t kill chrome.exe process

As I mentioned, there were occasionally lingering processes in the task manager. These were a nightmare. I noticed that if the downloads stopped working and for some reason had to close the browser, then most of the time I would be left with a chrome.exe process running in my task manager and no way to end it. No amount of End Process or End Process Tree could make this thing go away. I tried taskkill from cmd with the same result, it just wouldn’t end. It was like something had it locked.

If I then tried to run Chrome again, it just wouldn’t open. Since there was a chrome.exe process already running it wouldn’t allow for a new browser instance to be loaded. I tried to just log out of Windows and log back in, a usual fix, but much to my dismay chrome.exe was still locked in the task manager. The only solution for this was to restart the entire PC, and I still have a bad taste in my mouth.

Shockwave Flash crashing

Here’s where the door opened for me to see the true cause of my issues. After performing Chrome updates, uninstalling/reinstalling all versions of Java, reinstalling Chrome, and disabling all of my browser extensions, I was able to work somewhat normally. Downloads would work the majority of the time, but would still stop after a while. All pages loaded fine for the most part, aside from some slowness, but other than that it was doable (an admin’s way of saying “still broken but I have work to do”).

I started noticing that some sites would either eventually, or immediately, crash with the error “The following plug-in has crashed: Shockwave Flash

I did some research and found the solution at the top of the return list Here. This article was perfect for resolving the crashing with Flash. No longer was I getting that error, but downloads continued to periodically stop working.

Of course I followed the instruction at the bottom of the Fix Shockwave Flash in Google Chrome article and browsed to chrome://conflicts in my browser, but it returned “No conflicts detected”.

Chrome Conflicts

The Solution

Going off the resolution of the issue with the Shockwave plugin, I decided to look further into the chrome://plugins page in the Chrome browser.

I found that there were not only multiple Flash plugins (as described above) but also multiple Quicktime plugins were installed; 7 versions, of the same version.

Quicktime Multiplicity

After disabling all but the top entry and then uninstalling and reinstalling Quicktime, my download and freezing issues went away completely. It’s strange how so Quicktime was added 7 different times into the chrome://plugins page, but again this is a VM and my admin machine so really anything is possible.

**If you are having any general crashing, lockups, downloading, or page loading issues in Chrome, check the chrome://plugins page for duplicate or malicious looking plugins. Reference Google if you aren’t sure about what’s legit.

Summary

Check your Chrome plugins! If you have multiples then take ’em out! It’s hard to find a solution to an issue that is only vaguely describable in a short search engine query, but hopefully this general tip will help some of you out there.

Please let me know if you have any questions or comments below!

-ScriptdEEZ

If you found this article helpful or interesting, please donate a tip!
(LTC): LYs82mDXPohGDCzeRct8HkJwUCfwveGH1t
(BTC): 19JUVeefSBNbxUZNNmbDqfcctU6im6vsNg

Advertisements

AMD Radeon HD 7990 – Replacing Thermal Compound

Introduction

With the recent acquisition of an AMD HD 7990 GPU for Litecoin mining, I had some concerns. In my first post on the subject, I discussed the excessive heat issues that I encountered when mining at full power.

I’ve implemented solutions to problem and documented fully here. Now, I’ve taken the time to disassemble the 7990 and apply new thermal compound. This resulted in a 3C-5C temperature reduction, and below I’ll be discussing the process and full outcome.

AMD Radeon 7990

VTX3D HD 7990 and Heat

The card manufacturer for my 7990 is VTX. It’s built on the standard AMD spec, and comes with off-the-shelf cooling. I noticed right away that heat would be an issue as soon as I began testing cgminer. Heat climbed to over 100C if I let it run any longer than 15 minutes, AMD recommends keeping the card at or below 85C.

While I have tweaked my config, found a stable voltage setting, and effectively reduced temps while still maintaining the high hash rate expected of a 7990, I figured that I could reduce heat by another few degrees if I changed out the stock TIM.

Thermal Compound Selection

Thermal compound can be a peculiar medium. While many insist that it doesn’t matter if you use the ceramic-based, silver-based, or diamond-based, I have always had good results when applying an a aftermarket TIM. Results are only usually 2C-5C difference, but when it comes to 24/7 mining at full load any reduction can help prolong the life of your GPU.

I chose to use Arctic Silver’s Ceramique 2 for a couple of reasons. At first I was on the hunt for some Arctic Silver 5 but my local Radio Shack didn’t keep any in stock. I have always have had good results with AS5 and so wanted to stay with their product line. When I couldn’t find AS5 at any other PC stores I went with the next best product in the Arctic Silver line, Ceramique 2. While I think AS5 might have provided another ~1C reduction, the Ceramique definitely showed better performance over the stock compound.

Disassembly

Taking apart the card is pretty straight forward. There’s a step-by-step video here.

  1. The first step to disassembling the HD 7990 is to remove the back plate screws. Once the 8 screws are removed the back plate comes right off.
    Back Plate Removed - 2
  2. There are 4 screws along each side of the card. Remove these from both sides:
    Side Screws - 2
  3. The previous step allows for the fan mount to be removed. However, removing it can be a little bit tricky. There are two connectors that attach right underneath the heatsink fins. Once you’ve pulled the faceplate and fans away from the card a bit, you will see the connectors on opposite corners. Be sure to disconnect these before trying to fully remove the fans:
    Fan Mount
  4. Once the fans have been removed, turn the card over to unscrew the heatsink mounts. Be sure to keep track of all the screws and the direction that the brackets lie.
    Heatsink Bracket
  5. Now that the brackets have been removed the heatsink should be loose. It is a bit difficult to try and pull the sink away from the card by hand, so I used a flathead screwdriver to very gently pry the heatsink from the board.
    Heat Sink Removed

Cleaning GPU

Once the heatsink is removed you can investigate the status of the current TIM application. In my case, I felt that the manufacturer coverage was a little spotty. Not only does it look like there was way too much thermal compound, but it also contained a lot of air bubbles.

Stock TIM - Bubbles

You can see where the corners of the GPU are bare, and also the large amount of air bubbles  present throughout. This could have been a factor in my particular heat issues and may well be the case on other cards from VTX.

I used 90% rubbing alcohol with q-tips and coffee filters to remove the compound. For one heatsink, it was very easy to get all of the goo off. The other was a different story.

TIM Residue

This heatsink had a bunch of residue that just would not come off. Only after 45 minutes of scrubbing vigorously with rubbing alcohol soaked coffee filters (also tried acetone) did this ever become acceptably clean. Here is the final product after cleaning the heatsinks and the GPUs:

Clean Heatsinks
Clean GPU

Applying New TIM

I selected Ceramique 2 from Arctic Silver’s product line. It is a non-capacitative substance, unlike AS5, and so reduces risk of any shorting on the board from accidental contact on an exposed trace or other component.

Ceramique 2

Regarding which technique to use for applying the thermal paste, I’ve done some research and found that there are only slight differences in coverage with the different methods. What’s more important is the amount that is being used. Thermal compound is most effective when only a very thin layer is present between the GPU and heatsink surfaces. It’s only meant to interface between the two and not actually absorb or dissipate the heat, that’s the job of the heatsink. Here is a good article on Thermal Paste Application Techniques that I found very useful. It seems that probably the best method is using the X shape, but this is somewhat preferential.

I used the spread technique to apply the new thermal paste. I made sure there was only a thin layer by starting with a small pea-sized amount.

Once the new compound is applied, reconnecting the heatsink is the next step. This can be kind of tricky because there are two heatsinks and they are not connected together. I put one on at a time and secured it with the bracket before moving on to the next. When placing the heatsink on the GPU it’s super important that the contact is made flush. That way the compound will spread evenly and more of the chip’s surface has a chance to be covered. Once the one heatsink is attached and secured, move on to the next.

After the heatsinks are secured, just reverse the process above in reassembling the pieces. Once you have the card fully assembled you can immediately fire it up.

Results

At first, the new TIM did not make any difference. In fact after firing up my rig and starting cgminer with my standard settings, temps were higher than they were when I left off. Idle temps on the card were the same, but full load resulted in about 3C higher than what it was before. I thought that maybe the application of the compound had been faulty or that the TIM I used was just not good enough, but after looking into it I found that Ceramique 2 and AS5 have particular curing times. While Ceramique 2 has a shorter curing time than AS5, it is still required for optimal performance.

With this information, I decided to let my rig run at slightly reduced speed in order to let the TIM set. After about a week of running the rig and bringing it down for about 30 minutes to an hour each day, temps gradually reached a lower point.

The final temperature reduction from start to finish was between 3C-5C. Before the new thermal compound, running at memory clock 1500, voltage set to 1.09V, thread count at 2, and intensity at 13, I was getting 80C-85C on my hotter chip. After the new thermal compound, running with the same settings, I am at about 75C-80C on the hotter chip.

This makes me feel a bit more confident in letting my card run at full load 24/7. It was worrisome that the new TIM seemed to make things worse at first, but is comforting to know that there is indeed a set in period and for me personally this took about a week.

All in all, I would say that replacing the thermal compound on an HD 7990 is only necessary in certain situations that produce out of control heat issues. I think that, even with the shoddy application by the manufacturer, they still use a quality product for thermal interfacing. This was a little more trouble than it was worth, but resulted in slightly lower temps, and I’ll take what I can get.

I hope that if you decide to change out your card’s compound you have as good of results or better. Good luck, and happy mining!

-ScriptdEEZ

If you found this article helpful or interesting, please donate a tip!
(LTC): LYs82mDXPohGDCzeRct8HkJwUCfwveGH1t
(BTC): 19JUVeefSBNbxUZNNmbDqfcctU6im6vsNg

Switching JRE Versions – AutoHotkey

Introduction

Have you ever needed to have two different versions of Java installed in order for various applications to work on a user platform? Have you then had issues with one version overriding as default, and had to manually disable one or the other?

In this article, I’ll discuss how to set up a keystroke to launch a VBScript that will effectively change between two installed versions of Java, on-the-fly. This can be customized for any two versions, but in the example below I will be using versions 5u11 and 7u40.

-Explanation-

After digging for a solution to maintaining different IE8/Java ThinApps in our environment, due to the number of different web applications the organization uses, I located a Java properties file that can be read or modified in order to view or change the currently running version in a user’s profile.

This file sits in one of the following locations depending on the version of Windows:

Win XP: C:\Documents and Settings\username\Application Data\Sun\Java\Deployment\deployment.properties
Win 7:   C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\deployment.properties

Deployment.properties contains some, but not all, of the property values that are managed via the Java applet found in Control Panel, where one would normally configure JREs at a user-level.

Java Versions and Properties

If you open Control Panel> Java, click the Java tab, and click View, you will be presented with the screen below:

Java Versions

The above settings are read from and written to the deployment.properties file. Check or uncheck a box, and it updates this file. If you open C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\deployment.properties, you will find something that looks like this:

deployment.properties

Notice that there are two unique versions of JRE present, distinguished as deployment.javaws.jre.0 and deployment.javaws.jre.1. The objects are further defined by a set of properties, such as product, path, platform, and enabled.

For our script, we will be focusing on the following lines:

deployment.javaws.jre.0.enabled=
deployment.javaws.jre.1.enabled=

Also, make a note of the base versions, or platforms, associated with jre.0 and jre.1:

deployment.javaws.jre.0.platform=
deployment.javaws.jre.1.platform=

In my case, I have 1.5 and 1.7 for JRE 5 and JRE 7, respectively. There’s a more specific property,  product, that gives the exact version, but it’s not needed in our situation since our two platforms are different.

AutoHotkey

I implemented AutoHotkey for the listener. It’s an easy-to-use application that runs either as an item in the taskbar or hidden in the background. AutoHotkey can do things like open applications, focus different windows, send messages, perform command line operations, or even autocorrect anything you’d like with “hotstrings“. There are great resources online and really cool things you can do with it, so I recommend checking it out for other projects.

In our situation, we’ll be using AutoHotkey to launch the VBScript from a local (or shared) location.

Download AutoHotkey Here.

Installing

Download and run the installer. Always choose Custom to make sure there are no ads when installing anything new, as a precaution. Once finished, choose to Run.

You will be prompted to create your first AHK file in My Documents. Click Yes to continue. This will bring up a notepad with your new Autohotkey.ahk opened.

AutoHotkey Install

Go ahead read the comments, and then highlight and delete the following lines:

Autohotkey.ahk

(Note: If you want to run Autohotkey in hidden mode, add #NoTrayIcon anywhere in this file.)

Configuring

Now that AutoHotkey is installed, we’ll need to define the hotkey and action. I use Ctrl+Alt+J as an easy to remember keystroke.

For a local system, place your script in C:\Scripts\ and name it java_swtich.vbs. To use Ctrl+Alt+J to launch c:\scripts\java_switch.vbs, add the following line to AutoHotkey.ahk:

^!j::Run "c:\scripts\java_switch.vbs"

(Note: For complete documentation on hotkeys, refer Here.)

Save, close, and double click AutoHotkey.ahk in My Documents to reload. You may be prompted with the message below, click Yes.

Reload Autohotkey

If you chose not to add #NoTrayIcon then you will see AutoHotkey running in your taskbar. Otherwise, to verify, you will see AutoHotkey.exe running in your processes under Task Manager.

AH Taskbar

Copy and paste your AutoHotkey.ahk file into the Startup folder under the Start Menu to have launch at startup. If you want to launch for all users, add an string entry to the Windows registry under HKLM:\Software\Microsoft\Windows\CurrentVersion\Run and set it to the path of your .ahk file.

The Script

I wrote this in VBScript because we still have XP machines deployed as our primary desktop image. I’ve found that VBScript is easier to run as a background mechanism in XP rather than having to implement a PS console and invoke a script from there.

I mentioned before that this is coded to switch between Java versions 5u11 and 7u40, but this can be modified to use ANY version. I am putting values that would need to be changed or checked in BOLD AND ITALICS so that you can identify what needs to be modified in order to use other versions.

In addition to needing to update the script, you will also need to make sure that your deployment.properties file has the right versions listed in the right order. The best way to do this is to simply copy the current deployment.properties file and review the values that are present for the entries deployment.javaws.jre.0.platform and deployment.javaws.jre.1.platform. Assuming you only have two versions installed, these should be the only two “platforms” present.

-Preparation-

Win 7 vs XP

I’ve made two versions of this script to be used with Win7 and XP since deployment.properties exists in different locations on each system. Please be sure you are using the correct script for the correct system.

Deployment Properties

In order for the script to work, we will need two versions of deployment.properties. Copy deployment.properties from the user’s appdata location into C:\Scripts. For a network deployment put it onto a public share.

Name this first file deployment.properties5 and edit the following lines. (Note: If you have different versions of Java than what I’m using, match up your lower version to jre.1.platform and set jre.1.enabled=true)

deployment.javaws.jre.0.platform=1.7
deployment.javaws.jre.0.enabled=false
deployment.javaws.jre.1.platform=1.5
deployment.javaws.jre.1.enabled=true

Make a second copy of the file and name this one deployment.properties7. Edit the following lines. (Note: If you have different versions of Java than what I’m using, match up your higher version to jre.0.platform and set jre.0.enabled=true)

deployment.javaws.jre.0.platform=1.7
deployment.javaws.jre.0.enabled=true
deployment.javaws.jre.1.platform=1.5
deployment.javaws.jre.1.enabled=false

The Code

As mentioned above, there is a version of this script to be used with XP and another to be used for Win7. If you are using different versions of Java than what I have, just update your search string with the correct platform number. I have highlighted those values in BOLD AND ITALICS. I’ve also italicized the path for the custom properties files, which will need to be changed if everything is running from a network share.

Windows XP

'
' Title: Java Switch
' Author: Adam Baldwin
' Date: 1/8/14
' Function: The purpose of this script is to switch between two versions of java. The two 
' particular versions of Java coded into this script are 1.5 and 1.7. CODE FOR XP
'
'
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim objFSO, filepath, objInputFile, tmpStr, substrToFind1, substrToFind2, substrToFind3, substrToFind4, appdata, java7check, java5check

Set objFSO = CreateObject("Scripting.FileSystemObject")

' Expand user's AppData path into the appdata string

Set wshShell = CreateObject( "wScript.Shell" )
appdata = wshShell.ExpandEnvironmentStrings( "%APPDATA%" )

' Check if deployment.properties file exists

If (objFSO.FileExists(appdata & "\sun\java\deployment\deployment.properties")) Then

   filepath = appdata & "\sun\java\deployment\deployment.properties"

   ' Define strings for logic in validating deployment.properties

   substrToFind1 = "deployment.javaws.jre.0.enabled=true"
   substrToFind2 = "deployment.javaws.jre.1.enabled=true"

   substrToFind3 = "deployment.javaws.jre.0.platform=1.7"
   substrToFind4 = "deployment.javaws.jre.1.platform=1.5"

   ' Assign the text of deployment.properties to the objTextFile string

   Set objTextFile = objFSO.OpenTextFile(filepath, 1)

   ' Validator values to check for if Java 5 is truly jre.1 and Java 7 is jre.0

   java5check = 0
   java7check = 0

   ' Read each line of the text and increment javacheck value for version 5 or 7 if the string is found

   do until objTextFile.AtEndOfStream

      tmpStr = objTextFile.ReadLine

      If InStr(tmpStr, substrToFind1) >= 1 Then
         java7check = java7check + 1
      End If

      If InStr(tmpStr, substrToFind2) >= 1 Then
         java5check = java5check + 1
      End If

   Loop

   ' Assign the text of deployment.properties to objTextFile string again for second validation and applying the change

   Set objTextFile = objFSO.OpenTextFile(filepath, 1)

   do until objTextFile.AtEndOfStream

      tmpStr = objTextFile.ReadLine

      ' If the platform for jre.0 is 1.7 and if jre.0 is enabled, perform the following action (make 1.5 active)

      If InStr(tmpStr, substrToFind3) >= 1 AND java7check >= 1 Then

         strFileToCopy = "c:\scripts\deployment.properties5"
         strFileName = appdata & "\sun\java\deployment\deployment.properties"
         objFSO.copyFile strFileToCopy, strFileName,True

         'Write version 1.5 to registry for tracking

         set wshShell = CreateObject("WScript.Shell")
         wshShell.RegWrite "HKCU\Software\JavaSoft\DeploymentProperties\JavaVersion", "1.5", "REG_SZ"

         set wshShell = nothing

      End If

      ' If the platform for jre.1 is 1.5 and if jre.1 is enabled, perform the following action (make 1.7 active)

      If InStr(tmpStr, substrToFind4) >= 1 AND java5check >= 1 Then

         strFileToCopy = "c:\scripts\deployment.properties7"
         strFileName = appdata & "\sun\java\deployment\deployment.properties"
         objFSO.copyFile strFileToCopy, strFileName,True

         'Write version 1.7 to registry for tracking

          set wshShell = CreateObject("WScript.Shell")
          wshShell.RegWrite "HKCU\Software\JavaSoft\DeploymentProperties\JavaVersion", "1.7", "REG_SZ"

          set wshShell = nothing

      End If

   Loop

' If no config found, assume latest version is being used and make 1.5 active

Else
   strFileToCopy = "c:\scripts\deployment.properties5"
   strFileName = appdata & "\sun\java\deployment\deployment.properties"

   ' If the folder does not exist (as with a brand new user), create the directory path

   If Not objFSO.FolderExists(appdata & "\Sun\Java\Deployment") Then
      Set objFolder = objFSO.CreateFolder(appdata & "\Sun")
      Set objFolder = objFSO.CreateFolder(appdata & "\Sun\Java")
      Set objFolder = objFSO.CreateFolder(appdata & "\Sun\Java\Deployment")
   End If

   ' Copy custom deployment.properties to the active location
   objFSO.copyFile strFileToCopy, strFileName,True

   'Write version 1.5 to registry for tracking 
   set wshShell = CreateObject("WScript.Shell") 
   wshShell.RegWrite "HKCU\Software\JavaSoft\DeploymentProperties\JavaVersion", "1.5", "REG_SZ" 
   set wshShell = nothing 

End If

Windows 7

'
' Title: Java Switch
' Author: Adam Baldwin
' Date: 1/8/14
' Function: The purpose of this script is to switch between two versions of java. The two 
' particular versions of Java coded into this script are 1.5 and 1.7. CODE FOR WIN7
'
'
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim objFSO, filepath, objInputFile, tmpStr, substrToFind1, substrToFind2, substrToFind3, substrToFind4, username, java7check, java5check

Set objFSO = CreateObject("Scripting.FileSystemObject")

' Expand current username from environment

Set wshShell = CreateObject( "wScript.Shell" )
username = wshShell.ExpandEnvironmentStrings( "%username%" )

' Check if deployment.properties file exists

If (objFSO.FileExists("C:\Users\" & username & "\Appdata\LocalLow\sun\java\deployment\deployment.properties")) Then

   filepath = "C:\Users\" & username & "\Appdata\LocalLow\sun\java\deployment\deployment.properties"

   ' Define strings for logic in validating deployment.properties

   substrToFind1 = "deployment.javaws.jre.0.enabled=true"
   substrToFind2 = "deployment.javaws.jre.1.enabled=true"

   substrToFind3 = "deployment.javaws.jre.0.platform=1.7"
   substrToFind4 = "deployment.javaws.jre.1.platform=1.5"

   ' Assign the text of deployment.properties to the objTextFile string

   Set objTextFile = objFSO.OpenTextFile(filepath, 1)

   ' Validator values to check for if Java 5 is truly jre.1 and Java 7 is jre.0

   java5check = 0
   java7check = 0

   ' Read each line of the text and increment javacheck value for version 5 or 7 if the string is found

   do until objTextFile.AtEndOfStream

      tmpStr = objTextFile.ReadLine

      If InStr(tmpStr, substrToFind1) >= 1 Then
         java7check = java7check + 1
      End If

      If InStr(tmpStr, substrToFind2) >= 1 Then
         java5check = java5check + 1
      End If

   Loop

   ' Assign the text of deployment.properties to objTextFile string again for second validation and applying the change

   Set objTextFile = objFSO.OpenTextFile(filepath, 1)

   do until objTextFile.AtEndOfStream

      tmpStr = objTextFile.ReadLine

      ' If the platform for jre.0 is 1.7 and if jre.0 is enabled, perform the following action (make 1.5 active)

      If InStr(tmpStr, substrToFind3) >= 1 AND java7check >= 1 Then

         strFileToCopy = "c:\scripts\deployment.properties5"
         strFileName = "C:\Users\" & username & "\Appdata\LocalLow\sun\java\deployment\deployment.properties"
         objFSO.copyFile strFileToCopy, strFileName,True

         'Write version 1.5 to registry for tracking

         set wshShell = CreateObject("WScript.Shell")
         wshShell.RegWrite "HKCU\Software\JavaSoft\DeploymentProperties\JavaVersion", "1.5", "REG_SZ"

         set wshShell = nothing
      End If

      ' If the platform for jre.1 is 1.5 and if jre.1 is enabled, perform the following action (make 1.7 active)

      If InStr(tmpStr, substrToFind4) >= 1 AND java5check >= 1 Then

         strFileToCopy = "c:\scripts\deployment.properties7"
         strFileName = "C:\Users\" & username & "\Appdata\LocalLow\sun\java\deployment\deployment.properties"
         objFSO.copyFile strFileToCopy, strFileName,True

         'Write version 1.7 to registry for tracking

         set wshShell = CreateObject("WScript.Shell")
         wshShell.RegWrite "HKCU\Software\JavaSoft\DeploymentProperties\JavaVersion", "1.7", "REG_SZ"

         set wshShell = nothing
      End If

   Loop

' If no config found, assume latest version is being used and make 1.5 active

Else
   strFileToCopy = "c:\scripts\deployment.properties5"
   strFileName = "C:\Users\" & username & "\Appdata\LocalLow\sun\java\deployment\deployment.properties"

   ' If the folder does not exist (as with a brand new user), create the directory path

   If Not objFSO.FolderExists("C:\Users\" & username & "\AppData\LocalLow\Sun\Java\Deployment") Then
      Set objFolder = objFSO.CreateFolder("C:\Users\"&username&"\AppData\LocalLow\Sun")
      Set objFolder = objFSO.CreateFolder("C:\Users\"&username&"\AppData\LocalLow\Sun\Java")
      Set objFolder = objFSO.CreateFolder("C:\Users\"&username&"\AppData\LocalLow\Sun\Java\Deployment")
   End If

   ' Copy the custom deployment.properties file to the active location
   objFSO.copyFile strFileToCopy, strFileName,True 

   'Write version 1.5 to registry for tracking 
   set wshShell = CreateObject("WScript.Shell") 
   wshShell.RegWrite "HKCU\Software\JavaSoft\DeploymentProperties\JavaVersion", "1.5", "REG_SZ" 
   set wshShell = nothing 
End If

Save the script as java_switch.vbs under C:\Scripts or to your network location.

Testing

Make sure that AutoHotkey is configured with a hotkey pointing to C:\Scripts\java_switch.vbs, and make sure your ahk is loaded. Go to Control Panel> Java and check what version is currently enabled. Close the window and press the hotkey. Now go back into the Java applet and see if the second checkbox is checked with the previous one blank. If so, the script is working and you now have a method to easily switch between two versions! Be sure to close or restart your browser after switching Java versions to avoid any issues.

If not working, make sure that:

  1. AutoHotkey is running with the latest .ahk.
  2. The correct platform version is set to enabled=true for the its deployment.properties file. For example, if jre.0 is 1.7 and the file is deployment.properties7, make sure jre.0.enabled=true.
  3. You are using the correct script for your version of Windows.

Summary

This is a very useful mechanism in our environment because of the many web applications that still require older versions of Java. Now, with the ability for a user to simply switch between the two, we have mitigated the need for excessive workarounds.

Please feel free to leave any questions or comments below, and good luck!

-ScriptdEEZ

If you found this article helpful or interesting, please donate a tip!
(LTC): LYs82mDXPohGDCzeRct8HkJwUCfwveGH1t
(BTC): 19JUVeefSBNbxUZNNmbDqfcctU6im6vsNg

AMD Radeon HD 7990 – Downvolting for Scrypt Mining

Introduction

Thanks to a recent comment from one of the readers on my last blog post, we have another tweak for running the HD 7990 with even lower temperature, using just the stock cooling. The key is downvolting the card to a working and stable level.

Card Voltage – Issues

If you read my first post about the AMD HD7990, you might have seen that there were some issues when initially trying to downvolt the card. I tried many different settings, 1.08, 1.05, 1.0, and each value presented a different issue. Mostly these issues were with the rig choking up, display getting fidgety, slowness, and at 1.0V there were crashes. Additionally, my monitoring software only ever showed one gpu’s voltage change when downvolting.

Below I’ll discuss how I overcame the issues in Afterburner by disabling the ULPS feature and how to configure both cards for downvolting manually.

The Sweet Spot

I wanted to start by first thanking Marco, a reader who commented on the 7990 Scrypt Mining – Update post, as he’s presented a working voltage value to use for mining with the HD 7990.

At 1.09V I see the best temps on my rig and still maintain 1.3Mh/s-1.4Mh/s using my primary mining parameters. After plugging this into my Afterburner, I was able to reduce temps by another 5C at least. Check out my first LTC mining post for all of the settings that I use to reach a stable 1.3+ Mh/s. Also be sure to check out some of the comments at the bottom of the Update to that post for more info.

Downvolting

In order to downvolt the card, use the latest Beta version of MSI Afterburner. Set the slider to 1090 as seen in the image below:

MSI Afterburner Downvolting

Once Afterburner has been set, be sure to configure the gpu-vddc setting to 1.09 in cgminer. This can be done by either editing the cgminer.conf or by using the command line switch –gpu-vddc 1.09.

Monitoring Weirdness

As I mentioned above, my monitors only showed one voltage change. The suite I use is HWiNFO. This lead me to believe that the voltage settings were only being applied to one of the 7990’s two Tahiti gpus. I investigated and found that this is indeed the case and that there are some settings that need to be configured in order to apply voltage control over both cards manually.

MSI Synchronization – not working

Afterburner sees the HD7990 as two separate cards, and by default synchronizes the values from one to the other. Here’s the MSI Afterburner setting that replicates from one card to the other:

MSI Afterburner Settings

One would think that this means it synchronizes all settings, but it doesn’t seem to be the case with the voltage. I’ve also tried disabling this setting to manage both chips manually, but there is still no voltage control when you switch to the second card. As you can see in the image below, the slider is grayed out:

2nd GPU Voltage Slider Locked

And HWiNFO only shows one voltage reading at 1.09V:

Different Voltages

Disabling ULPS

What needs to happen to correct this is that ULPS needs to be disabled through Afterburner and the PC restarted. This unlocks the gray voltage slider for the second gpu in Afterburner to allow direct control. This is under Properties>General.

Disable ULPS

Here’s how to switch between cards in Afterburner to make sure the slider is now unlocked on the second card. Just select from the dropdown under Properties>General:

Card Select

Now set the slider for both cards to 1090 and click Apply. You should then see the correct voltage readings:

1.09V

Cgminer Voltage Reading – never right

One other problem is that cgminer always shows voltage as being 1.2 when you press g at the console window. I’m not sure if this only applies to the HD 7990, but I have confirmed with others that cgminer output doesn’t change on theirs either. So if you downvolt your HD 7990 card and notice it doesn’t change in the cgminer display, don’t worry, it’s been applied.

Cgminer 1.2V

Summary

Getting a stable voltage downgrade can help to reduce temperatures by at least another 5C. With a card that is running at 100% load 24/7, any temperature reduction that you can get is a good thing.

Stay tuned for my next post. I took the time to apply aftermarket thermal compound to my HD 7990. Be sure to check back for the process and results!

Happy Mining!

If you found this article helpful or interesting, please donate a tip!
(LTC): LYs82mDXPohGDCzeRct8HkJwUCfwveGH1t
(BTC): 19JUVeefSBNbxUZNNmbDqfcctU6im6vsNg

AMD Radeon HD 7990 Scrypt Mining – Litecoin – UPDATE

Update

My last post was mainly related to setting up the HD 7990 and some of the heating issues I experience while trying to mine. I was able to configure for the expected results but wanted to get some higher hash rates. I also finally received an official response from AMD about tahiti/malta chips’ safe temperatures.

AMD HD 7990

AMD HD 7990

AMD’s response to temperature ratings:

For a long time use, please keep the GPU lower than 85℃.

Please note that the other components also need working in a safe temperature, like the PCB, power supply circuits and the VRAM.

Best regards,
AMD Global Customer Care

Interestingly, here is a response from VTX about their defined safe temperatures.

VTX3D’s response to temperature ratings:

Thank you very much for your feedback.

Please see below as the reply.

Any questions, please feel free to let us know.

Many thanks.

1.      HD7990 safe running temp and Max temp are 95C. If the graphic card temp is over 95C, it needs to check the  thermal system.

2.      The card voltage is unlocked. You can try tune it by using Power tuner software which can be downloaded from our website. But we can’t promise card can keep run stable if you would like to tune down or up voltage.

So use your discretion. I plan to use this card for gaming when difficulty makes mining unprofitable, so I definitely want to keep my GPU at or below 85C to extend the life. Read more here.

Better Cooling = More Hashing

Now I’ve found that with sufficient enough cooling and the card running with –gpu-memclock set explicitly to 1500 that I can crank out an average of 1.4 Mh/s. With steady cool air on the card, I can run this frequency without ever getting past 85C. Of course, take away the cold air solution and I get right back in the 90C+ range, but this helped me stably reach the next level.

If you are able to cool the card enough, I highly recommend running it at gpu-memclock 1500. I tried 1600 and 1700 but they actually didn’t seem as stable or fast. Mess around with it, but if you want the best speeds I suggest setting your Afterburner and Cgminer to use memory clock frequency 1500!

Here’s the cgminer 3.6.6 command line for it:

cgminer --scrypt -o stratum+tcp://ltc.miningpool.com:3333 -u user.1 -p x --intensity 13 --thread-concurrency 8192 --worksize 256 -d 0,1 -g 2 --gpu-memclock 1500

And here’s a copy of the Cgminer config:

{
"pools" : [
{
"url" : "stratum+tcp://ltc.miningpool.com:3333",
"user" : "user.1",
"pass" : "x"
}
]
,
"intensity" : "13,13",
"vectors" : "1,1",
"worksize" : "256,256",
"kernel" : "scrypt,scrypt",
"lookup-gap" : "0,0",
"thread-concurrency" : "8192,8192",
"shaders" : "0,0",
"gpu-engine" : "0-0,0-0",
"gpu-fan" : "0-85,0-85",
"gpu-memclock" : "1500,1500",
"gpu-memdiff" : "0,0",
"gpu-powertune" : "0,0",
"gpu-vddc" : "0.000,0.000",
"temp-cutoff" : "95,95",
"temp-overheat" : "85,85",
"temp-target" : "75,75",
"api-mcast-port" : "4028",
"api-port" : "4028",
"expiry" : "120",
"gpu-dyninterval" : "7",
"gpu-platform" : "0",
"gpu-threads" : "2",
"hotplug" : "5",
"log" : "1",
"no-pool-disable" : true,
"queue" : "1",
"scan-time" : "30",
"scrypt" : true,
"temp-hysteresis" : "3",
"shares" : "0",
"kernel-path" : "/usr/local/bin",
"device" : "0-1"
}

**Check out my latest post on stable undervolting for even better temps! Thanks to Marco in the comments below!
http://scriptdeez.com/2014/01/10/amd-radeon-7990-downvolting/
If you found this article helpful or interesting, please donate a tip!
(LTC): LYs82mDXPohGDCzeRct8HkJwUCfwveGH1t
(BTC): 19JUVeefSBNbxUZNNmbDqfcctU6im6vsNg

AMD Radeon HD 7990 Scrypt Mining – Litecoin

Introduction

I wanted to share my recent experience with the AMD HD 7990 for Litecoin mining. Specifically the VTX3D HD 7990. I’ll be going over the selection process, setup, and issues that I found with this particular device.

In mid October, I missed an opportunity to invest in a KnC Jupiter late November shipment at market value. The Jupiter is currently, as of 12/11/13, the fastest BTC miner on the market with 1 BTC every 3 days and has sold on eBay for over $20k. I decided that if I wanted to take part of the current mining market  I would need to concentrate on Litecoin and other Scrypt currencies. As of this writing, all Scrypt crypto-currencies are limited to just CPU and GPU mining.

Decisions

After researching mining and current high-performance GPUs I found the AMD 7990. This card is basically two 3GB 7970’s on one board. According to this Litecoin hardware comparison, the 7990 is at the top of the list with a max of ~1518KH/s, while the 7970 lies at about half the hashrate @~780KH/s. Both the 7970 and the 7990 take up two card slots in the case.

After considering the implications of a two vs one graphics card setup I decided that a single unit would be best for my situation. I’m an avid gamer and so figured this couldn’t be a total loss. I purchased a VTX3D HD 7990 GPU, out of the many decisions at the time ranging from $1k-$1.3k. This card ran about $1.1k, including shipping from Korea. Apparently VTX is one of the many manufacturers of the AMD 7990 cards, based out of Taiwan. They have a 3 year warranty and their cards are voltage unlocked (UPDATE: We found working voltage settings to effectively undervolt the HD 7990. Check out the details Here!).

The Card

I had the card delivered via Korea EMS express and it arrived within a week. After unboxing the 5lb monster of a card, I snapped it into my rig. It barely fit in my Thermaltake V2 case. Putting it in at the right angle helped. I’m using an ASUS mobo with single PCI-E 2.0 slot, core i5 3.3 Ghz, and 850W Gold rating PSU. It came with its own driver disc, but as always I went online and found the latest. For AMD, this is Catalyst 13.11 beta 9. Base readings on temp were ~35C-40C at idle and the default clock was set to 1000MHz for the core and 1500MHz for the memory. I used MSI Afterburner for clock adjustments and fan management.

I noticed that stock heat management on this card was a little inefficient. There is a rear facing exhaust vent, as with most GPUs, but a lot of the hot air was actually being exhausted into the case itself because of the design of the heat sink and fans. This caused excessive heat buildup in my case when the side panel was closed, and so I now keep it opened with a fan directed towards it.

Issues

The first thing I did was run cgminer 3.6.6 to get a reading on the hashrate and associated temperature at full load. I used the older version because I was more familiar with the configuring the command line in Windows. I ran with the following switches:

cgminer --scrypt -o stratum+tcp://ltc.miningpool.com:3333 -u user.1 -p x --intensity 13 --thread-concurrency 8192 --worksize 256 -d 0,1 -g 2

I decided on the intensity and thread concurrency based on other configurations I’ve seen in forums, while the -d switch is to ensure that both Tahiti GPU chips are being engaged and -g to increase thread count per processor for more hashing.

-Heat

I started with the side panel closed. Hashrates were immediately in the 1.3Mh/s to 1.5 Mh/s range, with ~650Kh/s per chip average, but this resulted in extremely high temperature. The GPU climbed from idle up to 90C+ within just a few minutes, and if I let it run any longer it would continue to climb up past 100C and eventually shut down the PC. This was out of control and not feasible with my stock cooling.

I haven’t found much information on the VTX cards specifically. There may be some questionable quality standards in the manufacturing of VTX vs some of the other companies like Sapphire. I’ve read that some of these cards have improper application of thermal compound, but I can’t confirm whether that’s the case or not because all normal usage seems fine and I haven’t checked or replaced the paste (UPDATE: I’ve taken the time to replace the stock TIM on the HD 7990. Check out the process and results Here!).

My problem also had a lot to do with the case being closed, so the first step was taking that apart and getting a desk fan directed at the card. This helped, but not completely. Ultimately, the best fix for this is probably just to get a better cooling solution or fix the heat sink assembly, but I wanted to know how to configure the card for use with just my stock cooling.

-Hashrate

I found that the speed and temp were impacted when intensity was changed, so I reduced it to 12. While this helped reduced temperatures greatly it also greatly reduced my hashing rate down to about 250Kh/s per chip. That is about half the rate that I expected when purchasing the unit, so this was a major problem if I ever wanted to recover my principle cost. I simply could not let this run with the intensity lower than 13 because of how reduced the rate was at that setting and with the other parameters.

-Software (MSI Afterburner)

After researching, I read that the voltage could be underclocked to reduce temperature and still run everything else at full clock speed. Here’s where I ran into another bit of trouble.

In the version of MSI Afterburner that I was using, the voltage slider was grayed out, even with the option checked to “unlock voltage” in the options menu. I found several posts online about the issue, some recommending registry changes, and some recommending adding DLLs to the Afterburner folder, but in the end it turned out to be only that I was using the wrong version of MSI Afterburner. The version I used was the latest stable build from their site, while the working version was actually the latest Beta. This was important for me to be able to unlock voltage, however there came another issue along with this.

MSI Afterburner

MSI Afterburner

Afterburner Settings

-Voltage

When I made the voltage adjustments, I tried many different settings. I set the slider to 1080, 1050, 1000 and set cgminer to use the respective voltages (1.08, 1.05, and 1.00), however on each of these settings there were issues. With the intensity back at 13, and at the middle intervals, hashing was slow. The entire computer would also lock up every few seconds. At the lowest setting, 1.0 V, the screen actually  turned all white and I had to manually power down the PC to get it back online.

I don’t know if this happened because of a voltage lock on the card. I emailed VTX tech support and sales, but have not heard back with a definitive answer (Please see my updated post!). It may also be possible that I just misconfigured my miner, but after having checked and verified the formats I feel that they were correct. Another reason that I think this card might be voltage locked is because when changing it in MSI, I don’t actually see the reading change on my hardware monitoring program.

After some effort, I simply could not figure out how to stably reduce the voltage. (**UPDATE** Check out my latest post about finding the right voltage setting.) I was stuck and still seeing the high temps (90C-100C) when running the above parameters, which provided the necessary high hash rate for return.

Reducing Heat

I found that heat generation and hashing speed were linked to memory clock frequency. Reducing the memory clock as low as 850 in cgminer with –gpu-memclock 850 kept temps in the 60’s with the intensity at 13. Hash rate was slowed to a crawl at 850, though, so I increased in increments to find some good values.

For my VTX3d 7990 the memory clock sweet spots are at the intervals 1200, 1210, 1400, and 1410 MHz. With better cooling I’m sure you could run higher, but having just stock cooling and a fan blowing on the card I get 1.0Mh/s-1.3Mh/s and temperatures never passing 85C. I get temps 5C-10C colder by keeping my rig in a cool space, a room with a good ventilation. Keeping the box in a cold garage might work as well, if you’re not concerned about potential moisture.

I assume if you have a better solution like aftermarket heat sink or liquid setup that this would be much less of an issue. Also, replacing the stock thermal compound with something like Arctic Silver should help. I made a custom curve to run the fans at 80-90% when in the high 60’s to mid 70’s and 100% once reaching mid to high 70’s (see image below under the Config section). Plan to make one of these as well.

-Stability/Safe Temp

After exhausting research I found that most, if not all, AMD cards are officially rated to run at 85C constant temp when under load without causing damage. Whatever you decide I think this would be a safe operating temperature for 24/7 mining. I’m currently running cgminer with the following settings and never get past 85C, but usually stay in the mid 70s:

cgminer --scrypt -o stratum+tcp://ltc.miningpool.com:3333 -u user.1 -p x --intensity 13 --thread-concurrency 8192 --worksize 256 -d 0,1 -g 2 --gpu-memclock 1210

(Note: If you run with gpu-memclock at 1400 or 1410 you can get a higher steady hash, but with slightly higher temps. The results in the image below are from running 1210.)

Set the memory clock value in Afterburner to make sure that the card is adjusted and the settings aren’t mismatched. I get between 1.0Mh/s – 1.3 Mh/s in this configuration which is on par with my expectations.

Cgminer Output

Cgminer Output

Config

-Cgminer

To make things a little easier I’ve included my cgminer config below. Just save this file as cgminer.conf in the cgminer base folder. These are the values that I run without any voltage adjustments on the card and with stock cooling to squeeze out the most Worker Utility (WU). If you don’t already know, WU is the accepted hash rate that your pool will count for your worker.


{
"pools" : [
{
"url" : "stratum+tcp://ltc.miningpool.com:3333",
"user" : "user.1",
"pass" : "x"
}
]
,
"intensity" : "13,13",
"vectors" : "1,1",
"worksize" : "256,256",
"kernel" : "scrypt,scrypt",
"lookup-gap" : "0,0",
"thread-concurrency" : "8192,8192",
"shaders" : "0,0",
"gpu-engine" : "0-0,0-0",
"gpu-fan" : "0-85,0-85",
"gpu-memclock" : "1210,1210",
"gpu-memdiff" : "0,0",
"gpu-powertune" : "0,0",
"gpu-vddc" : "0.000,0.000",
"temp-cutoff" : "95,95",
"temp-overheat" : "85,85",
"temp-target" : "75,75",
"api-mcast-port" : "4028",
"api-port" : "4028",
"expiry" : "120",
"gpu-dyninterval" : "7",
"gpu-platform" : "0",
"gpu-threads" : "2",
"hotplug" : "5",
"log" : "1",
"no-pool-disable" : true,
"queue" : "1",
"scan-time" : "30",
"scrypt" : true,
"temp-hysteresis" : "3",
"shares" : "0",
"kernel-path" : "/usr/local/bin",
"device" : "0-1"
}

-Fan Settings

Below is an image of my fan curve, but you can set this to whatever works for you. I’m not too concerned about wearing out the fans as they can be fixed or replaced, and keeping my GPU as cool as possible is more important to me than a blown out fan.

Summary

All in all, I find the Radeon HD 7990 to be a phenomenal card. After tweaking and optimizing heat management, this card pushes out a decent amount of hashes even with it being underclocked and with stock cooling. Letting it run at full power could possibly turn out more hashes, I’ve personally seen up to 1.5Mh/s – 1.6Mh/s on mine, but that would take a much better cooling solution than what I’ve come up with.

Overall, if you’re looking for a space and power efficient LTC mining solution, I think that the 7990 is a good investment. Not only can it potentially make ROI, you will also have the best GPU on the market for gaming and performance. Just be sure not to cook it 😉

If you’ve come up with any other cooling solutions, have any other tweaking insights, or just have a question, please feel free to comment below!

Now get out there and mine!

-ScriptdEEZ

***Update!

More information on running the card at stock 1500 MHz and also a response back from AMD and VTX about their safe temperatures. Check it out Here!

AMD Radeon HD 7990 Scrypt Mining – Litecoin UPDATE

I’ve also found a great voltage setting and replaced the thermal compound on this card. Check out the results below!

AMD Radeon HD 7990 – Downvolting for Litecoin Mining
AMD Radeon HD 7990 – Replacing Thermal Compound

If you found this article helpful or interesting, please donate a tip!
(LTC): LYs82mDXPohGDCzeRct8HkJwUCfwveGH1t
(BTC): 19JUVeefSBNbxUZNNmbDqfcctU6im6vsNg