That said, having managed fleets of machines that were nominally running the "same" software, getting updates from all of them is a really powerful debugging tool. Once you get above about 1,000 machines logs comparison of all the machines immediately surfaces software issues (happens on all machines), connectivity issues (machines in a certain area), bad machines (unique problem signature), and environmental issues (time of day correlation with other things like power/temp/humidity/etc).
And that gives you a bit more courage to release things early because you'll see problems faster and can fix them.
So with a typical roll-out of 10% of the population followed by an additional 15% followed by the rest, you can catch a lot of errors and 75% of your population sees a really good experience (and in web services where 66% of the populations the minimum requirement for delivering rated service you can often get close to 100% uptime).
Does that justify their action? No. But since you really don't need everybody to participate to get the benefit I could see a path where you opt in for early access to drivers which requires the telmetry, and people who are ok waiting for the driver to be clean in the 'canary' population get a driver without telemetry.
Remember that it's not just games, but your web browser, media players and anything that might use hardware acceleration runs through these drivers, which then reports back to nVidia. Plus, all telemetry data is unencrypted during transmission.
On the plus side, it looks like this is only transmitted back to the mothership if you're running GeForce Experience, which I don't think is even available on Linux.
The engineering feature is designed with pure intentions, keep crap out of the results stream, but the mechanism is amoral. If you're executive team wants to exploit it for more money so that the company does better financially, your options are limited as an engineer.
And that gives you a bit more courage to release things
early because you'll see problems faster and can fix them.
I gotta say, if the major benefit of telemetry is that vendors can test less before they release, that sounds like a bad thing not a good thing for users?Testing less means they can release sooner.
Here is a bad example. New game comes out. Graphical driver glitch crash. Typically would take 2 weeks to get to public as whole. Now with this they can release in 2 days to 10% fix up and release to whole by end of first week. So 90% of population got a fix sooner(1 week) And some percentage of the 10% may have had some annoyances. Sucks for them. But if they roll out in a way that minimizes this. It'd be beneficial to all overall.
@ECHO OFF
setLocal EnableDelayedExpansion
rem nvup.bat, a quick & dirty driver downloader since GeForce Experience requires a login.
rem In a folder with write permissions, drop the script and its two dependencies:
rem - jq: https://stedolan.github.io/jq/
rem - curl: https://curl.haxx.se/
rem For automation, just create a Scheduled Task that runs when you want it (I like on Resume).
rem Reuse / modify / redistribute at will.
rem http://stackoverflow.com/questions/19131029/how-to-get-date-in-bat-file
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo lastCheck: "%fullstamp%" > lastCheck.log
rem to get the update feed for your device/OS combo, go to http://www.geforce.com/drivers
rem , pick your device/os, pop the "Network" tab of your devtools, start the driver search,
rem and copy the url
curl --silent -o rawNv.json "http://www.geforce.com/proxy?..."
for /f "delims=" %%i in ('jq ".IDS[0].downloadInfo.DownloadURL" rawNv.json') do set lastUrl=%%i
set /p installedUrl=< installedUrl.txt
if %installedUrl%==%lastUrl% (
echo same version, quitting
exit /B
) else (
echo new version, updating
echo %lastUrl% > installedUrl.txt
pushd C:\Users\YOURUSERNAME\Downloads
%~dp0\curl -O %lastUrl%
popd
rem http://stackoverflow.com/questions/774175/show-a-popup-message-box-from-a-windows-batch-file
mshta "javascript:alert('New driver');close()"
) $URI = 'http://www.geforce.com/proxy?proxy_url=http%3A%2F%2Fgfwsl.geforce.com%2Fservices_toolkit%2Fservices%2Fcom%2Fnvidia%2Fservices%2FAjaxDriverService.php%3Ffunc%3DDriverManualLookup%26psid%3D101%26pfid%3D815%26osID%3D57%26languageCode%3D1078%26beta%3D0%26isWHQL%3D1%26dltype%3D-1%26sort1%3D0%26numberOfResults%3D10'
$Download = (Invoke-WebRequest $URI | ConvertFrom-Json | Select -ExpandProperty IDS)[0].downloadInfo.DownloadURL
# Installed driver version (21.21.13.7570) > NVIDIA driver version (375.70)
[Version]$Driver = (Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion, Manufacturer | Where { $_.Manufacturer -eq "NVIDIA" -and $_.DeviceName -like "*GeForce GTX*" }).DriverVersion
[Version]$CurrentDriver = ("{0}{1}" -f $Driver.Build,$Driver.Revision).Substring(1).Insert(3,'.')
# Latest driver on NVIDIA's website
[Version]$LatestDriver = ([System.Uri]$Download).Segments[-2].Trim('/')
If ($CurrentDriver -lt $LatestDriver) {
Write-Output "New driver available"
Start-BitsTransfer -Source $Download -Destination "$env:USERPROFILE\Downloads"
(New-Object -ComObject WScript.Shell).Popup("New NVIDIA driver downloaded",0,"Update")
} Else {
Write-Output "Same version. Nothing to download"
}
Improvements welcome. :)Thank you for sharing your work with us!
There are some older versions of nvidea experience floating around that still work with shadowplay without the login.
Uninstalled. Never to be reinstalled.
AMD will be my next card. Thanks nVidia for letting me know what you think of me :)
Then Ubuntu 16.04 comes out, and guess what? No fglrx driver support any more [2] and users report the open source drivers use about a core and a half worth of CPU, slowing down their entire machines. Apparently our only options are to buy new cards or stay on 14.04 indefinitely.
Meanwhile, I had an nVidia card and I was able to upgrade to 16.04 with no problems at all.
This week you might have resolved not to buy from nVidia - but in the same week I've resolved not to buy from ATI.
[1] https://certification.ubuntu.com/hardware/201302-12679/ [2] http://www.omgubuntu.co.uk/2016/03/ubuntu-drops-amd-catalyst...
And if you think nVidia treats customers/users badly, just watch AMD's treatment of Apple hardware. They added artificial blocks preventing the "normal" driver from installing there (even though it is fully functional) and you have to use a special Bootcamp driver, which is incredibly outdated and buggy as hell in modern games. Their support is about as useful as you expect in a big corporation, and then some. It's so bad that enthusiasts are re-packaging AMD's drivers to have something: https://www.mxdriver.com
No harm, no foul, probably time to give AMD cards a chance. Variety is the spice of life and the spice must flow.
As much as I'd love true competition in the GPU/CPU space, it doesn't exist. AMD's cards simply cannot compete with Nvidia for GPGPU type scenarios, and even in its basic capacity, often have known heat/perf issues. Now that may be worth it for now to make a statement against the telemetry, but what if (less if and more when IMO) AMD then adds driver telemetry? And then intel?
These domains (Chip manufacture/GPU driver writing) are so advanced at this point that I don't see how competition could reasonably disrupt an incumbent over anything less than a samsung-grade failure (and even then probably not), and I'm concerned about the long-term wherein the producers realize this and through a combination of boiling the frog slowly and leaving consumers no other choices put themselves in the position to have a "pragmatic monopoly" of free reign over our machines. (I've always wondered what would happen from an antitrust sense, if it's "we're the only producer not because we WANT to but because we're the only ones who CAN")
We've certainly seen it happening with OSes, as well as some attempts from PC oems, I've always unfortunately thought it was just a matter of time until the more irreplaceable components got into the game too and I'd love some creative thoughts to actually stop the trend and not stand in its way, because I'm not sure we'll win that latter battle.
EDIT: as a child post points out, I completely forgot to mention drivers as well; as a strong argument to my "we don't have many options" thesis. AMD's linux support has been historically lacking next to NVIDIA which makes it a non starter in many cases.
I don't know about others, but I approach that stuff with the attitude of "I can't expect change if I just swear at my monitor", but stop short of actually expecting change
For now I have shadowplay set up correctly, but any changes aren't gonna be happening it seems.
Way to go Nvidia.. uninstalling your non-driver app crashes games :)
That's a weird edge case to support. After all, the app in question is responsible for recording in game video thus implying some kind of dependency.
There's a youtube video I fail to find where a nvidia driver engineer explains how many games are terribly broken, failing to respect OpenGL/DirectX basics. Drivers hand-patch that, just like Microsoft hand-patch Windows for specific games "because compatibility" [1].
Maybe true historically - but in recent years publishers have figured out a formula to subvert criticism (review embargos, sponsored reviews, reddit astroturfing). There's no action after the complaining, it's all bark, they still buy the game, little bit of heat on reddit/twitter but then you still set sales records. See The Division, No Man's Sky.
Why would I want to use this Exprience thing anyway? It's crapware, right?
As for telemetry - as long as software only sends reasonable things (feature usage etc) and uses reasonable bandwidth, I'm completely fine. I honestly don't even mind if programs do it without asking and I think all apps should have feature statistics telemetry to be able to cut (or make more discoverable) features no one uses.
I use it for NVIDIA Share. It's my understanding that GPU-based alternatives can't compete because NVIDIA won't give them access to NVFBC and NVIFR. The creator of RivaTuner goes into more detail here:
http://forums.guru3d.com/showpost.php?p=4687310&postcount=61
It is equivalent to installing spyware.
These are GPU drivers. It's not at all unreasonable that there may be something sensitive shown on the screen when a crash occurs. It might not even be shown on the screen but still present in GPU memory:
https://news.ycombinator.com/item?id=10873059
I would not be surprised if the telemetry included some parts of GPU state which could contain sensitive data.
It's not terribly secret, now was it? It was... you know... immediately discovered and I'm pretty sure my driver changelog AND firewall asked about it.
> These are GPU drivers. It's not at all unreasonable that there may be something sensitive shown on the screen when a crash occurs.
Pardon me, could you please explain exactly what in the telemetry or common crash logs might reflect "sensitive" information? You seem to me like you're arguing from some sort of grand final consequence, "Well I assume there is sensitive data here!" And while perhaps that's not an unreasonable default policy to take, you might want to state it as such rather than implying (as you have) that it's been observed already.
In general, telemetry doesn't include bulk memory dumps. The technology for collection strongly discourages this, as the endpoints collecting standard telemetry need to run at the scale of your customer base. I'd be much more concerned about sharing log dumps if you've filled your framebuffers with confidential information.
So as far as things go now what happens is, new game is released, players with card X and configuration Y N P and Z complain about driver crashes over reddit/forums, NVIDIA/AMD picks up on it and then starts to try to figure what the hell is going on. Usually some initial mitigating actions would be released within a few days, and within a week to a month a full driver update will be released.
While this isn't the end of the world, it's annoying that you have issues that prevent you from enjoying a game that you paid 60$ for on a system that you likely paid at least 1000$ if not 3-4 times that.
https://www.reddit.com/r/linux_gaming/comments/5bcppp/nvidia...
--
Here is my email:
Dear Nvidia,
I have been a life-long supporter since I was in college (14 years). I have recommended your products to many friends and purchased more than 15 of your graphics cards for my own computers. I build servers and run a cloud storage business. My friends and family look to me for advice on their own purchases. I am your target market - a technology leader that makes recommendations to others.
I have been extremely satisfied with your product for a long time and would like to be able to recommend your "issue-free" products to my friends, family, and associates. I'm a big fan of Nvidia.
-- Unfortunately, you have recently enabled telemetry reports (https://news.ycombinator.com/item?id=12884762), and I will be less willing to recommend your product, opting for an AMD solution, or on-board solutions.
-- To resolve this issue, please:
1: Please use opt-in defaults instead of opt-out defaults for privacy-sensitive reports2: Make a blog post publishing your public policy on prioritizing user privacy over other priorities.
--
On a more general note, privacy issues will be an increasingly important consideration for technology leaders before making recommendations. Microsoft made a mistake integrating privacy-invasive telemetry into Windows 10. Please don't make the same mistake. Nvidia needs leaders that will prioritize user privacy over other market concerns.
Thank you,
David
Shouldn't be a problem anymore under Linux as most distros today install Nouveau drivers by default. https://nouveau.freedesktop.org/wiki/
[1] https://technet.microsoft.com/en-us/sysinternals/bb963902.as...
There is an exception though - since Windows 10's enforced telemetry, I have turned off all of the telemetry for all of their software across the board. Until they start to conduct themselves respectably again, they can do without my drop in their ocean.
Hopefully Zen can complete at least at the $200 price point with Intel.
I don't think anybody is suggesting at this point we ditch automatic updates -- the consensus seems to be they fix more problems than they cause. So this is going to remain a problem.
The bloat is endemic to hardware companies. Is there some law of nature that says if you primarily build peripherals then you write terrible software?
It is not enough to focus on the telemetry giant corporations like NVIDIA or Microsoft while forgetting about all the P2P software being installed by game's vendors and "telemetry" of software smaller vendors.
On big computers/pcs the default mode makes the user give up too much control _forever_ once the software its has been installed. Most software only need to be doing anything when your actually using it.
What we need is not opt-in checkboxes from vendors, what we need is the operating-system level software to be better -> where our explicit permission is needed to "allow" some kind of activity like transmitting over the network or detecting my location.
Do recent drivers always include the latter? How do I check for them? Are they kernel modules?
In my case, all the nvidia drivers I see loaded are:
$ lsmod | grep nv
nvidia_drm 20480 1
drm 294912 3 nvidia_drm
nvidia_uvm 704512 0
nvidia_modeset 770048 3 nvidia_drm
nvidia 11866112 42 nvidia_modeset,nvidia_uvmDo you really want your software to be considered spyware?
Rather: by requiring the user to opt in.