forum

Ultimate guide to low-latency osu! on Linux (rev.12)

posted
Total Posts
277
Topic Starter
Franc[e]sco
this has been rewritten yet again as most workarounds aren't required anymore since wine 3+

example video of the final result:


https://www.youtube.com/watch?v=GcIrlorWmaQ with touchscreen

performance is indistinguishable from windows. there might be a very slight ~25ms sound latency which is easily compensated with +25 local offset

tested on
- gentoo, wine-3.5, radeon, dwm (tested by me)
- arch, wine 3.5-1, nvidia proprietary drivers, gnome (thanks @_goeo for testing and helping out)

at the bottom of this guide you can find a bunch of extra tips about video drivers and other system tweaks which can help a lot in certain systems, make sure to read them if you have time

some cutting-edge distros run wayland by default. it's recommended that you log into xorg instead (most DE-s have an option at login to select X as your session). wayland is untested and will likely have a performance hit on osu as wine doesn't support it and needs to run though a xorg compatibility layer

install the newest wine version you can find for your distro, 3+ is recommended. if you're stuck with old 2.x versions you might wanna try 1.8 or 1.9 if you can get them

if your distro packages wine-staging, it's fine to use it as long as it's based on wine 3+. staging can help running other games better, but it didn't really affect osu for me. it's nice to have if you run games other than osu though

  1. ubuntu:
    sudo dpkg --add-architecture i386
    
    wget -nc https://dl.winehq.org/wine-builds/Release.key
    sudo apt-key add Release.key
    sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
  2. arch:
    pacman -Sy wine
    . you can also try wine-staging for extra gaming features if you play other games but as far as I know development has stopped.
  3. gentoo:
    sudo emerge --ask =app-emulation/wine-vanilla-9999


if you have any problems installing wine, see the extras for useful links with more info

install winetricks

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

chmod +x winetricks
sudo mv -v winetricks /usr/local/bin


create a new wine prefix and install .NET 4.6.2, gdiplus and japanese font aliases:

WINEPREFIX=~/osu-wine WINEARCH=win32 winetricks -q dotnet462 cjkfonts gdiplus


run winecfg

WINEPREFIX=~/osu-wine WINEARCH=win32 winecfg


navigate to graphics and ensure that "allow the window manager to decorate the windows" and "allow the window manager to control the windows" are enabled. this can allow native fullscreen to work which can help performance on bloated desktop environments like gnome

optional: fixing japanese fonts
SPOILER
as discovered by _goeo, it's possible to fix both the top right icons in the main menu and japanese fonts by copying fonts from a windows install or iso.

to extract japanese fonts from the Windows 10 iso:

download the iso from here https://www.microsoft.com/en-us/software-download/windows10ISO

install 7z

  1. ubuntu:
    sudo apt install p7zip
  2. arch:
    sudo pacman -Sy p7zip
  3. gentoo:
    sudo emerge --ask app-arch/p7zip



cd ~/Downloads
7z e Win10_*.iso sources/install.wim
7z x install.wim 1/Windows/Fonts
sudo cp -r 1/Windows/Fonts /usr/share/fonts/WindowsFonts
sudo chmod -R 755 /usr/share/fonts/WindowsFonts
sudo fc-cache -f


fix wonky font hinting:

WINEPREFIX=~/osu-wine WINEARCH=win32 winetricks settings fontsmooth=rgb


see https://wiki.archlinux.org/index.php/Microsoft_fonts#Extracting_fonts_from_a_Windows_ISO for more info

you can also just copy your fonts folder from a windows install and install it in the same way


set wine audio driver to alsa to reduce latency (works even if you use pulseaudio)

WINEPREFIX=~/osu-wine WINEARCH=win32 winetricks sound=alsa


registry dsound tweak to further minimize sound latency

cat > dsound.reg << "EOF"

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Wine\DirectSound]
"HelBuflen"="512"
"SndQueueMax"="3"
EOF

WINEPREFIX=~/osu-wine WINEARCH=win32 wine regedit dsound.reg


download the osu installer https://m1.ppy.sh/r/osu!install.exe

run it:

WINEPREFIX=~/osu-wine WINEARCH=win32 wine ~/Downloads/osu\!install.exe


the updater should say that it's installing in
C:\Users\youruser\Local Settings\Application Data\osu!


if it's not, you better take note of where it's installing or click to change the location

if the updater gets stuck in a loop at the discord-rpc dll see section troubleshooting

osu will start up and start downloading the bundled beatmaps, let it finish, set it up however you like and check how it feels

don't worry if it's stuck with vsync, we will disable it with our launcher script. also see extras for more info on vsync tweaks

if you're on a fancy desktop environment with a compositor and effects, you might want to run in fullscreen (which should be the default). this will potentially bypass the compositor.

if you use multiple monitors and/or fullscreen isn't working well, you are forced to use window or borderless windowed. since window mode can suffer all kinds of performance issues because of desktop environments and their compositors, I recommend turning off your compositor or not using one at all. if you keep having poor performance or input lag, try a lightweight window manager like openbox, dwm, jwm, i3, or a de with no compositor like lxde

if you use a tiling window manager like dwm, fullscreen might not play well with it (freezes when you switch workspaces on dwm), so disable fullscreen which will make the game borderless fullscreen (unless you change resolution)

create a shortcut to your osu folder:

ln -sv osu-wine/drive_c/users/loli/Local\ Settings/Application\ Data/osu\! ~/osufolder


create a script to start osu:


cat > osu << "EOF"
#!/bin/sh

export vblank_mode=0
export WINEARCH=win32
export WINEPREFIX=$HOME/osu-wine
wine ~/osufolder/osu\!.exe "$@"
EOF

sudo mv osu /usr/bin/
sudo chmod +x /usr/bin/osu


create a script to kill osu and shutdown wine. this is useful when osu freezes or doesn't seem to start


cat > osukill << "EOF"
#!/bin/sh

export vblank_mode=0
export WINEARCH=win32
export WINEPREFIX=$HOME/osu-wine
wineserver -k
EOF

sudo mv osukill /usr/bin/
sudo chmod +x /usr/bin/osukill


you can now run
osu
in a terminal or launcher to start osu and
osukill
to force-kill it

and of course you can access your osu folder to drop in skins and whatnot at ~/osufolder

if you're a more gui oriented person, you can create a desktop shortcut like so (replace loli with your username):

wget http://w.ppy.sh/c/c9/Logo.png -O ~/osulogo.png


cat > ~/Desktop/osu\!.desktop << "EOF"
[Desktop Entry]
Encoding=UTF-8
Name=osu!
Comment=Weeb circle clicking game
Type=Application
Exec=osu %F
Icon=/home/loli/osulogo.png
StartupWMClass=osu!.exe
Categories=
EOF

chmod +x ~/Desktop/osu\!.desktop


------------------------------------

extras and troubleshooting

------------------------------------


remember to read your or other distro's wiki (I recommend arch and gentoo wikis) to find potentially known solutions to your problems

here's some useful resources:

  1. https://wiki.archlinux.org/index.php/wine
  2. https://wiki.winehq.org/Ubuntu
  3. https://wiki.archlinux.org/index.php/NVIDIA
  4. https://wiki.archlinux.org/index.php/ATI
  5. https://wiki.archlinux.org/index.php/intel_graphics
  6. https://wiki.gentoo.org/wiki/NVidia/nvidia-drivers
  7. https://wiki.gentoo.org/wiki/Radeon
  8. https://wiki.gentoo.org/wiki/Intel
  9. https://help.ubuntu.com/community/RadeonDriver
  10. https://help.ubuntu.com/community/AMDGPU-Driver
  11. https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia
  12. https://wiki.debian.org/NvidiaGraphicsDrivers
  13. https://wiki.debian.org/AtiHowTo
  14. https://wiki.archlinux.org/index.php/Touchscreen
  15. https://wiki.archlinux.org/index.php/Wacom_tablet
  16. https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/
  17. https://ibcomputing.com/how-to-install-wine-3-linux/#Install_Wine_3_in_Ubuntu_1804_or_Earlier


troubleshooting:
approach circles look weird/choppy (by @_goeo)
SPOILER
limit your fps.

while the game is not running, open your osu!.user.cfg, and set the CustomFrameLimit to the highest fps your computer can handle stably. Note that osu! normally shows how many milliseconds it takes to render a frame instead of the fps in the "fps counter", so the math is
fps = 1000/(how many milliseconds it takes to render one frame)


if you get red X'es upon running the installer:
SPOILER
arch linux users have reported seeing red X'es on the osu installer / launcher. this seems to be caused by a broken or missing 32-bit libpng. try installing libpng (both the 32bit and 64bit versions) like so (this command is for arch, but the fix applies to all distros where this happens):

pacman -Sy lib32-libpng libpng


if it still doesn't work, check what version of libpng you have by doing

ls /usr/lib | grep libpng


then symlink it to libpng12.so.0 (replace libpng16.so with whatever version you have)

sudo ln /usr/lib/libpng16.so /usr/lib/libpng12.so.0

sudo ln /usr/lib32/libpng16.so /usr/lib32/libpng12.so.0


note that the lib32 part is only required if you are on a 64-bit system.


osu doesn't seem to have internet even though my internet works fine
SPOILER
(by [Vanilla Coke] )

some distros don't automatically install 32-bit gnutls as a dependency of wine. on arch you can fix this with
sudo pacman -S lib32-gnutls


osu! updater stuck in a loop or stuck at discord dll
SPOILER
get the discord-rpc dll from a working osu install or download it from here http://hnng.moe/f/Zzq and place it into your osu folder


I started osu but nothing pops up and it's hogging cpu
SPOILER
this happens very rarely, the solution is to kill osu completely and restart it by running the osukill script created in the guide


more tweaks to get rid of vsync:
SPOILER
if the game's framerate is still limited and you are on a radeon GPU, you can try the following which disables vsync on some old radeon GPUs:

sudo mkdir -v /etc/X11/xorg.conf.d

cat > tmp.conf << "EOF"
Section "Device"
Identifier "Radeon"
Driver "radeon"
Option "SwapbuffersWait" "off"
EndSection
EOF
sudo mv tmp.conf /etc/X11/xorg.conf.d/10-radeon.conf


and reboot or restart xorg (change "radeon" to "amdgpu" if you're using the amdgpu driver).

if you are on nvidia, check the proprietary driver's control panel and make sure there is no vsync anywhere enabled.
if it's still limited, doublecheck your in-game frame limiter from the options.

again, you can check your distro's wiki for more driver and distro specific tweaks


mouse players: polling rate and mouse acceleration
SPOILER
you can disable mouse acceleration by running

xset m 0 0


to check that acceleration is disabled, you can run:

xset q | grep -A 1 Pointer

which will output

Pointer Control:

acceleration: 0/1 threshold: 0


if you have a barebones xorg setup you can easily add the command to your .xinitrc or other init scripts.

on distros like ubuntu/mint you can open "Startup Applications", click Add -> custom command and set it up like so:



you can adjust the mouse polling rate like so:

echo "options usbhid mousepoll=1" | sudo tee /etc/modprobe.d/usbhid.conf

where 1 is the interval in milliseconds, meaning that 1 is 1000Hz, 2 is 500Hz and so on.

you must either reboot or "sudo rmmod usbhid && sudo modprobe usbhid" to apply changes, and if the command fails you will have no keyboard or mouse control until you reboot.

I don't recommend changing this unless you feel a clear latency or choppyness in your mouse movements, as it can increase cpu usage in xorg and firefox.


huion h420 / osu!tablet area and monitor mapping
SPOILER
if for some reason your huion isn't recognized or isn't working as a tablet, you can get the amazing digimend drivers:

  1. arch aur https://aur.archlinux.org/packages/digimend-kernel-drivers-dkms-git/
  2. manually https://github.com/DIGImend/digimend-kernel-drivers#installing


however, many distros already come with them

if you have multiple monitors and the tablet is mapped to the wrong one, you can re-map it, otherwise just skip to xinput_calibrator.

list your monitors using xrandr:

xrandr


for me it shows two monitors named DVI-0 and DVI-1:

Screen 0: minimum 320 x 200, current 3286 x 1080, maximum 16384 x 16384

DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
...
DVI-1 connected primary 1920x1080+1366+0 (normal left inverted right x axis y axis) 531mm x 299mm
1920x1080 60.00 + 144.00* 119.98 99.93 84.90 59.94
...


in my case, DVI-1 is my main 144Hz monitor.

run xinput in a terminal to see the list of your input devices, mine is:

...

⎜ ↳ ELAN Touchscreen id=10 [slave pointer (2)]
⎜ ↳ HUION 420 Pen id=11 [slave pointer (2)]
⎜ ↳ HUION 420 Mouse id=12 [slave pointer (2)]
⎜ ↳ HUION 420 Consumer Control id=14 [slave pointer (2)]
⎜ ↳ SteelSeries Kana Gaming Mouse id=16 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
↳ HUION 420 Keyboard id=13 [slave keyboard (3)]
↳ HUION 420 System Control id=15 [slave keyboard (3)]


in my case, "HUION 420 Pen" is my device name.

you can now map your tablet to your desired monitor like so (remember to use your own device name and monitor name):

xinput map-to-output "HUION 420 Pen" DVI-1


you can set this command to run at startup as explained in mouse acceleration.

if you wish to change your tablet's area (I don't), install xinput_calibrator if it's not already:

  1. ubuntu, debian and other derivates
    sudo apt install xinput-calibrator
  2. arch aur: https://aur.archlinux.org/packages/xinput_calibrator-git/
  3. gentoo
    sudo emerge --ask x11-apps/xinput_calibrator


apt install xinput-calibrator

now list your devices to find out your tablet's id and name:

xinput_calibrator --list


this is what it outputs for me:

Device "ELAN Touchscreen" id=10

Device "HUION 420 Pen" id=11


sometimes there will be two huion devices for 1 tablet, just pick the first one.

you can now run xinput_calibrator with your tablet's name (id also works). don't do anything, just let it run to get the default area values in case
you lose them.

xinput_calibrator --device "HUION 420 Pen"

Calibrating EVDEV driver for "HUION 420 Pen" id=11

current calibration values (from XInput): min_x=0, max_x=8340 and min_y=0, max_y=4680

in my case, the default area is 0 8340 0 4680.

you can now set the area values using your device's name (replace the values with your desired values, see below on how to calculate them):
xinput set-prop "HUION 420 Pen" "Evdev Axis Calibration" 0 8340 0 4680


you can set this command to run at startup as explained in mouse acceleration.


touchscreen
same configuration as huion tablets. my Asus VT168N is supported out of the box and shows up as "ELAN Touchscreen". all you have to do is use map-to-output as explained in the huion section and map it to itself.

calculating tablet area values
SPOILER
this is really simple maths and logic. Just read through the examples and you will get it.

let's say I wanted an area half the size of the full area in the top left corner with the same aspect ratio as the default area.

in my case, the default area is 0 8340 0 4680.

8340 / 4680 = 1.78205128205

BottomX = 8340 / 2 = 4170
BottomY = 4170 / 1.78205128205 = 2340
The new area is 0 4170 0 2340.

Let's say I wanted to center this area.
TopX = (8340 - 4170) / 2 = 2085
TopY = (4680 - 2340) / 2 = 1170
BottomX = 4170 + 2085 = 6255
BottomY = 2340 + 1170 = 3510
The new area is 2085 6255 1170 3510.

Let's say I wanted this area in the bottom right corner.
TopX = 8340 - 4170 = 4170
TopY = 4680 - 2340 = 2340
BottomX = 4170 + 4170 = 8340
BottomY = 2340 + 2340 = 4680
The new area is 4170 8340 2340 4680.

if you want to achieve the same effect as "forced proportions" you can calculate the aspect ratio of your monitor and use that instead of 1.78205128205 in the above calculations. The aspect ratio for 16:9, for example, is simply 16/9 = 1.77777777778.


wacom tablets
SPOILER
input-wacom has great support for wacom tablets

- arch:
sudo pacman -S xf86-input-wacom

- ubuntu:
sudo apt install xserver-xorg-input-wacom

- gentoo:
sudo emerge --ask x11-drivers/xf86-input-wacom


see "mapping wacom tablets to a subregion of the screen" to adjust the area

these 2 settings control smoothing of the cursor movement


xsetwacom set "device name" Suppress 2
xsetwacom set "device name" RawSample 4


you can get your device name with

xsetwacom --list devices


Suppress makes the cursor position update only for bigger changes, which can stabilize it but can also introduce unresponsiveness. it's recommended to keep this low, range is 1-100

RawSample is how many position samples are interpolated together. this smooths cursor movement and stabilizes it, but also creates input latency. it's recommended to keep this low. range is 1-20

see https://github.com/linuxwacom/input-wacom/wiki/Installing-input-wacom-from-source for more info


fixing hover range on wacom tablets
SPOILER
(discovered by @_goeo)

if you use a wacom tablet and you do not drag, you may notice that you go out of your tablet's range much easier than on windows. this is because of a tablet feature where it has two different states of being in proximity, and in range, in which the pen is still close enough that the tablet detects it but not as close as "in proximity". the current linux wacom drivers completely ignore this second state, and only update your pen's location if it's in proximity. but the maintainer of the linuxwacom project has done some work on it (i'm not sure if they're planning to merge it (perhaps as a setting) to the main driver), and this branch is the fixed driver where you can lift your pen as high as you could on windows.

https://github.com/jigpu/input-wacom/tree/bamboo-inrange

you will have to manually install it.

uninstall any older version of input-wacom just to be sure

first of all, get the prerequisites:

  1. debian, ubuntu, mint:
    sudo apt-get install linux-headers-$(uname -r) build-essential
  2. rhel, centos, fedora:
    sudo yum install gcc "kernel-devel-uname-r == $(uname -r)"
  3. arch:
    sudo pacman -Syy
    
    sudo pacman -S linux
    sudo reboot


    after the reboot
    sudo pacman -S linux-headers
  4. open SUSE 11.4:
    sudo zypper install kernel-devel
    
    sudo zypper install --type pattern devel_basis



cd
git clone --branch bamboo-inrange --depth 1 https://github.com/jigpu/input-wacom
cd input-wacom
if test -x ./autogen.sh; then ./autogen.sh; else ./configure; fi && make && sudo make install || echo "Build Failed"


reboot and enjoy your drivers

see https://github.com/linuxwacom/input-wacom/wiki/Installing-input-wacom-from-source for more info


converting your Windows wacom tablet area to linux (wacom only):


see the calculations in the huion section if you need to decide an area from scratch.

mapping wacom tablets to a subregion of the screen
SPOILER
xsetwacom allows more advanced area configuration on wacom tablets. you can map your tablet's area to a specific region of the screen instead of an entire
monitor.

xsetwacom --set <device id> MapToOutput <width>x<height>+<x>+<y>


you can get your device id with

xsetwacom --list devices


here's some examples:

full screen:

xsetwacom --set 15 MapToOutput 1920x1080+0+0


full screen, right monitor of a dual monitor setup with 2 1920x1080 screens:

xsetwacom --set 15 MapToOutput 1920x1080+1920+0


800x600 rectangle in the top left:

xsetwacom --set 15 MapToOutput 800x600+0+0

how to calculate XY to center the area:
x = (monitor width - area width) / 2
y = (monitor height - area height) / 2

note that the xy coordinates are across all screens, so for example if you have a 1024x768 monitor on the left and you want your area on the right monitor you must add 1024 to x.


installing obs-studio for streaming and recording
SPOILER
  1. ubuntu:
    sudo add-apt-repository ppa:obsproject/obs-studio
    
    sudo apt-get update && sudo apt-get install obs-studio
  2. arch:
    sudo pacman -Sy obs-studio
  3. gentoo:
    sudo emerge --ask media-video/obs-studio


once that's done, just run OBS and set it up like you would on windows. I am using a PS3eye as a handcam which is supported out of the box on linux.

if window capture gives you a black screen, scroll down in the settings and tick "use alpha-less texture format".

if you compiled your kernel from scratch (for example on gentoo) and you want to use the ps3eye, the required kernel modules are:


CONFIG_VIDEO_V4L2=y
CONFIG_USB_GSPCA_OV534=y
CONFIG_USB_GSPCA_OV534_9=y


you can set these in /usr/src/linux/.config and recompile, or search from them in make menuconfig.

remember to reboot.

on a pure ALSA system you need to manually add an ALSA audio capture device in your scene with the correct device.

here's my ~/.asoundrc with loopback audio set up correctly for recording (you need to have the alsa loopback device enabled in your kernel)

https://github.com/Francesco149/loli-overlay/blob/master/sys-config/loli/files/asound.conf

adjust it to your devices if you're gonna copy it. and then in OBS you would select the loopback PCM as the device


pure alsa
SPOILER
a pure alsa setup can achieve lower latency than pulseaudio. here's my ~/.asoundrc for reference

https://github.com/Francesco149/loli-overlay/blob/master/sys-config/loli/files/asound.conf

adjust it to your devices. you should tweak the buffer sizes to the limits of your hardware by trial and error.

more info:

https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture

https://wiki.gentoo.org/wiki/ALSA

if you don't want to remove pulseaudio you can always use pasuspender to temporarily stop pulseaudio while playing osu:

pasuspender -- osu


video drivers
SPOILER
for amd, the radeon open-source drivers are recommended. if you're feeling adventurous, you can try amdgpu. it has better vulkan support and better support for newer GPU's. it might have a performance hit on specific models though.

for nvidia, it's recommended to use the proprietary nvidia drivers.

for intel integrated graphics, the open-source drivers that ship with the kernel should be fine

if you have ubuntu, it's likely that the drivers installed by default will just work

to check that your driver is properly accelerating graphics, open a shell and run:

glxinfo | grep render

You should get something like (the important part being the first line):

direct rendering: Yes

GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
Extended renderer info (GLX_MESA_query_renderer):
OpenGL renderer string: Gallium 0.4 on AMD PITCAIRN (DRM 2.43.0, LLVM 3.8.0)
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil,
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_NV_blend_square, GL_NV_conditional_render, GL_NV_depth_clamp,
GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,


another thing you can use to test is

vblank_mode=0 glxgears


which after a couple seconds should be outputting pretty high fps values (over 14'000 for me).

always check with your distro's wiki on how to install drivers as steps might be slightly different:

  1. https://wiki.archlinux.org/index.php/NVIDIA
  2. https://wiki.archlinux.org/index.php/ATI
  3. https://wiki.archlinux.org/index.php/intel_graphics
  4. https://wiki.gentoo.org/wiki/NVidia/nvidia-drivers
  5. https://wiki.gentoo.org/wiki/Radeon
  6. https://wiki.gentoo.org/wiki/Intel
  7. https://help.ubuntu.com/community/RadeonDriver
  8. https://help.ubuntu.com/community/AMDGPU-Driver
  9. https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia
  10. https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/
  11. https://wiki.debian.org/NvidiaGraphicsDrivers
  12. https://wiki.debian.org/AtiHowTo
  13. http://linuxwacom.sourceforge.net/wiki/index.php/Tablet_Configuration
  14. https://wiki.archlinux.org/index.php/Wacom_tablet


refresh rate
SPOILER
if you have a 144hz monitor or any monitor that isn't 60Hz you will want to take advantage of that.

run this:

xrandr --output DVI-1 --mode 1920x1080 --rate 144


replace 1920x1080 with your resolution, 144 with your refresh rate and DVI-1 with your monitor's name from the xml file (or you can run xrandr to find out your monitor's name on other distros):

if xrandr is not installed, your package manager will have it for sure, so install it.

you can put this into your ~/.xinitrc to run it on startup

for ubuntu and mint you might also need to edit monitors.xml. open a terminal an run the following

nano ~/.config/monitors.xml


then identify the monitor on which you want to change the refreshrate (in my case DVI-1) and change the number in

<rate>60</rate>


to your desired refresh rate, then press CTRL+O to save, press enter to confirm and press CTRL+X to exit.

this will take effect after a reboot. you can also immediately change the refresh rate using the xrandr command above


lightboost for VG248QE
SPOILER
my vg248qe monitor support lightboost, which greatly reduces the amount of motion blur and pixel ghosting for fast moving objects. you can enable it with the following commands (only tested on the vg248qe, other monitors might have different modelines):

xrandr --newmode "1920x1080_120lb" 286.7 1920 1968 2000 2080 1080 1083 1088 1149 +HSync -VSync

xrandr --addmode DVI-1 1920x1080_120lb
xrandr --output DVI-1 --mode 1920x1080_120lb


where DVI-1 is your monitor's name (see "refresh rate" above to get your monitor's name).
Rori Vidi Veni
This informative post will be deleted anyway, just move along
Topic Starter
Franc[e]sco

Rori Vidi Veni wrote:

Franc[e]sco wrote:

You can also use the open-source driver if you want, but the proprietary one usually outperforms it.
You have some very outdated info man. Now open AMD drivers are better because AMD actually hired people whose job is helping and contributing to them, and plans to make them into a base of a unified driver(the the closed source drivers will become optional plugins for the open one).

You'd be right for Nvidia though, IIRC they shared info with the open drive team exactly once in last decade.
thanks for the info, I'll try the radeon driver and report on performance in a bit then ;)
I don't know if lightboost will also work on that one though so I'm not sure I'll keep it even if it outperforms the proprietary one
Topic Starter
Franc[e]sco
UPDATE: I installed the open source ati driver and I'm getting the same performance as the proprietary drivers. Lightboost works as well. Nice.
UPDATE2: Updated the guide to use open-source driver and added a section on how to enable lightboost.
UPDATE3: Added pre-compiled winealsa.drv and tablet area instructions
UPDATE4: Added HUION / osu!tablet area instructions
[echo]
I have no Pulseaudio (in fact, I really don't like pulseaudio).
Here's an asound.conf/asoundrc it for no-pulseaudio people:

SPOILER
pcm.!default {
type plug
slave.pcm "dmixer"
}

pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_size 32
buffer_size 640
}
bindings {
0 0
1 1
}
}

ctl.dmixer {
type hw
card 0
}

Change hw:0,0 appropriately for your config and change the bindings if you have surround of course.

Nice guide btw, very useful :3
Thanke for the winealsa.drv, that helped.
sarnex
Thanks for the post. Works on Gentoo.
Sockstah
Nice. An updated guide for that was long overdue. Thank you for this.
Will try on Xubuntu later and report back.
SebDaMuffin
First of all, thank you so much for this! I got this working pretty well but I am wondering how you capture osu's sound after it is sent to ALSA. I use obs for recordings so I can only capture from pulseaudio. I got osu playing through pulseaudio using a few hints from this guide but it crackles and changing the buffer size doesn't help. How did you capture your audio, Franc[e]sco?
Topic Starter
Franc[e]sco

SebDaMuffin wrote:

First of all, thank you so much for this! I got this working pretty well but I am wondering how you capture osu's sound after it is sent to ALSA. I use obs for recordings so I can only capture from pulseaudio. I got osu playing through pulseaudio using a few hints from this guide but it crackles and changing the buffer size doesn't help. How did you capture your audio, Franc[e]sco?
I modified winepulse.drv the same way I did with winealsa and changed wine to output the sound through pulse. I will update the guide with the modded driver soon.
SebDaMuffin
Wow great! Very nice to see that you're on top of this :) Looking forward to it and I'll report back with results!
Topic Starter
Franc[e]sco
Updated to rev.5
- Added a section on switching to pulseaudio and still achieve zero latency
- Added a section on recording with OBS
SebDaMuffin
Thanks again for this! I tested today with the winepulse alterations and I'm getting performance similar to what I get in windows, with no crackles so far. Sometimes the sound gets really distorted, even unrecognizable, in which case I have to restart pulseaudio to fix it (this used to happen in wine applications for me a while ago). This only seems to happen when I open new applications that use pulseaudio. Let me enumerate the problems you fixed for me :). I can now record with obs, use hitsounds without changing my offset every time (makes mapping much easier), play hitsounded beatmaps, so I can re-enable effect sounds now (like the countdown and miss sound). Because I had a -130ms offset before, it messed with the AR of the first note on most maps and made getting a 300 on the first note really hard if there was no musical lead in. That's been remedied too :) I noticed you got some of your information from other sources but its the winepulse alterations that helped me, so here's another thank you from me, hopefully showing you how grateful I am :D I'll let you know if I find anything I can help with!
[Shiori]
Thank for this GUIDE!! Time to uninstall windows
RaidMax
Very thorough guide! Great job. I have an issue though. After following all the steps, I was able to get it running, albeit < 100 fps. Using NVIDIA proprietary drivers. ( default open sources ones added a bit more fps but still unstable. ) I went to install the cutting edge ( after fighting with libgnutils forever ), and it finally updated. However, now I go to load it it up and I get no osu! I've tried running it via terminal and just double clicking the exe, but nothing comes up. I'm downloading gdiplus at the moment to see if that's an issue, but I doubt it. Any ideas on why the application just wont launch? Using Ubunutu 15 & wine 1.7.5

last output:
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 237
Current serial number in output stream: 238

ouput of glxinfo
SPOILER
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB,
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NVE4
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.5.9
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_trinary_minmax,
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, GL_ARB_base_instance,
GL_ARB_blend_func_extended, GL_ARB_buffer_storage,
GL_ARB_clear_buffer_object, GL_ARB_clip_control,
GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage,
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_derivative_control, GL_ARB_draw_buffers,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_ARB_draw_indirect, GL_ARB_draw_instanced,
GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, GL_ARB_gpu_shader5,
GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect,
GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_sprite,
GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sample_shading,
GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_seamless_cubemap_per_texture, GL_ARB_separate_shader_objects,
GL_ARB_shader_bit_encoding, GL_ARB_shader_objects,
GL_ARB_shader_texture_lod, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_packing, GL_ARB_stencil_texturing, GL_ARB_sync,
GL_ARB_texture_barrier, GL_ARB_texture_buffer_object,
GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range,
GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc,
GL_ARB_texture_cube_map_array, GL_ARB_texture_float,
GL_ARB_texture_gather, GL_ARB_texture_mirror_clamp_to_edge,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
GL_ARB_texture_swizzle, GL_ARB_texture_view, GL_ARB_timer_query,
GL_ARB_transform_feedback2, GL_ARB_transform_feedback3,
GL_ARB_transform_feedback_instanced, GL_ARB_uniform_buffer_object,
GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object,
GL_ARB_vertex_attrib_binding, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_viewport_array, GL_ATI_blend_equation_separate,
GL_ATI_texture_compression_3dc, GL_ATI_texture_float,
GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_blend_equation_separate,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float,
GL_EXT_pixel_buffer_object, GL_EXT_polygon_offset_clamp,
GL_EXT_provoking_vertex, GL_EXT_shader_integer_mix, GL_EXT_texture_array,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query,
GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra,
GL_IBM_multimode_draw_arrays, GL_KHR_context_flush_control, GL_KHR_debug,
GL_MESA_pack_invert, GL_MESA_texture_signed_rgba,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil,
GL_NV_texture_barrier, GL_NV_vdpau_interop, GL_OES_EGL_image,
GL_OES_read_format, GL_S3_s3tc

OpenGL version string: 3.0 Mesa 10.5.9
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_trinary_minmax,
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, GL_ARB_base_instance,
GL_ARB_blend_func_extended, GL_ARB_buffer_storage,
GL_ARB_clear_buffer_object, GL_ARB_clip_control,
GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage,
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_derivative_control,
GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced,
GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_instanced_arrays,
GL_ARB_internalformat_query, GL_ARB_invalidate_subdata,
GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind,
GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query,
GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex,
GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects,
GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture,
GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding,
GL_ARB_shader_objects, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_stencil_texturing,
GL_ARB_sync, GL_ARB_texture_barrier, GL_ARB_texture_border_clamp,
GL_ARB_texture_compression, GL_ARB_texture_compression_bptc,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
GL_ARB_texture_swizzle, GL_ARB_texture_view, GL_ARB_timer_query,
GL_ARB_transform_feedback2, GL_ARB_transform_feedback3,
GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_window_pos, GL_ATI_blend_equation_separate, GL_ATI_draw_buffers,
GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc,
GL_ATI_texture_env_combine3, GL_ATI_texture_float,
GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_copy_texture, GL_EXT_draw_buffers2, GL_EXT_draw_instanced,
GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB,
GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels,
GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,
GL_EXT_polygon_offset, GL_EXT_polygon_offset_clamp,
GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shader_integer_mix,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
GL_EXT_texture_array, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query,
GL_EXT_transform_feedback, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,
GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_KHR_context_flush_control, GL_KHR_debug, GL_MESA_pack_invert,
GL_MESA_texture_signed_rgba, GL_MESA_window_pos, GL_NV_blend_square,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fog_distance,
GL_NV_light_max_exponent, GL_NV_packed_depth_stencil,
GL_NV_primitive_restart, GL_NV_texgen_reflection, GL_NV_texture_barrier,
GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_NV_vdpau_interop,
GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.5.9
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_APPLE_texture_max_level, GL_EXT_blend_minmax,
GL_EXT_color_buffer_float, GL_EXT_discard_framebuffer,
GL_EXT_draw_buffers, GL_EXT_map_buffer_range, GL_EXT_multi_draw_arrays,
GL_EXT_read_format_bgra, GL_EXT_separate_shader_objects,
GL_EXT_shader_integer_mix, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888,
GL_EXT_texture_rg, GL_EXT_texture_type_2_10_10_10_REV,
GL_EXT_unpack_subimage, GL_KHR_context_flush_control, GL_NV_draw_buffers,
GL_NV_fbo_color_attachments, GL_NV_read_buffer, GL_OES_EGL_image,
GL_OES_EGL_image_external, GL_OES_compressed_ETC1_RGB8_texture,
GL_OES_depth24, GL_OES_depth_texture, GL_OES_depth_texture_cube_map,
GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,
GL_OES_get_program_binary, GL_OES_mapbuffer, GL_OES_packed_depth_stencil,
GL_OES_rgb8_rgba8, GL_OES_standard_derivatives, GL_OES_stencil8,
GL_OES_surfaceless_context, GL_OES_texture_3D, GL_OES_texture_npot,
GL_OES_vertex_array_object

240 GLX Visuals
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x021 24 tc 0 32 0 r y . 8 8 8 8 . . 0 24 8 0 0 0 0 0 0 None
0x022 24 dc 0 32 0 r y . 8 8 8 8 . . 0 24 8 0 0 0 0 0 0 None
0x1ea 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 0 0 0 0 0 0 None
0x1eb 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 16 16 16 16 0 0 Slow
etc...

360 GLXFBConfigs:
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x082 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 0 0 0 0 0 0 None
0x083 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 16 16 16 16 0 0 Slow
0x084 24 tc 0 32 0 r y . 8 8 8 8 . . 0 0 0 0 0 0 0 0 0 None
0x085 24 tc 0 32 0 r y . 8 8 8 8 . . 0 0 0 16 16 16 16 0 0 Slow
etc....

I switched back to the open source drivers in hopes it would help. No luck

snippet from Xorg log:
/var/log/Xorg.0.log:[    19.007] (II) LoadModule: "glx"
/var/log/Xorg.0.log:[ 19.009] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
/var/log/Xorg.0.log:[ 19.016] (II) Module glx: vendor="X.Org Foundation"
/var/log/Xorg.0.log:[ 19.016] (==) AIGLX enabled
/var/log/Xorg.0.log:[ 19.024] (==) NOUVEAU(0): GLX sync to VBlank enabled.
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_ARB_create_context
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_ARB_create_context_profile
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_INTEL_swap_event
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_EXT_framebuffer_sRGB
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_ARB_fbconfig_float
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: Loaded and initialized nouveau
/var/log/Xorg.0.log:[ 19.428] (II) GLX: Initialized DRI2 GL provider for screen 0
Topic Starter
Franc[e]sco

RaidMax wrote:

Very thorough guide! Great job. I have an issue though. After following all the steps, I was able to get it running, albeit < 100 fps. Using NVIDIA proprietary drivers. ( default open sources ones added a bit more fps but still unstable. ) I went to install the cutting edge ( after fighting with libgnutils forever ), and it finally updated. However, now I go to load it it up and I get no osu! I've tried running it via terminal and just double clicking the exe, but nothing comes up. I'm downloading gdiplus at the moment to see if that's an issue, but I doubt it. Any ideas on why the application just wont launch? Using Ubunutu 15 & wine 1.7.5

last output:
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 237
Current serial number in output stream: 238

ouput of glxinfo
SPOILER
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB,
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NVE4
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.5.9
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_trinary_minmax,
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, GL_ARB_base_instance,
GL_ARB_blend_func_extended, GL_ARB_buffer_storage,
GL_ARB_clear_buffer_object, GL_ARB_clip_control,
GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage,
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_derivative_control, GL_ARB_draw_buffers,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_ARB_draw_indirect, GL_ARB_draw_instanced,
GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, GL_ARB_gpu_shader5,
GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect,
GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_sprite,
GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sample_shading,
GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_seamless_cubemap_per_texture, GL_ARB_separate_shader_objects,
GL_ARB_shader_bit_encoding, GL_ARB_shader_objects,
GL_ARB_shader_texture_lod, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_packing, GL_ARB_stencil_texturing, GL_ARB_sync,
GL_ARB_texture_barrier, GL_ARB_texture_buffer_object,
GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range,
GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc,
GL_ARB_texture_cube_map_array, GL_ARB_texture_float,
GL_ARB_texture_gather, GL_ARB_texture_mirror_clamp_to_edge,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
GL_ARB_texture_swizzle, GL_ARB_texture_view, GL_ARB_timer_query,
GL_ARB_transform_feedback2, GL_ARB_transform_feedback3,
GL_ARB_transform_feedback_instanced, GL_ARB_uniform_buffer_object,
GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object,
GL_ARB_vertex_attrib_binding, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_viewport_array, GL_ATI_blend_equation_separate,
GL_ATI_texture_compression_3dc, GL_ATI_texture_float,
GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_blend_equation_separate,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float,
GL_EXT_pixel_buffer_object, GL_EXT_polygon_offset_clamp,
GL_EXT_provoking_vertex, GL_EXT_shader_integer_mix, GL_EXT_texture_array,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query,
GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra,
GL_IBM_multimode_draw_arrays, GL_KHR_context_flush_control, GL_KHR_debug,
GL_MESA_pack_invert, GL_MESA_texture_signed_rgba,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil,
GL_NV_texture_barrier, GL_NV_vdpau_interop, GL_OES_EGL_image,
GL_OES_read_format, GL_S3_s3tc

OpenGL version string: 3.0 Mesa 10.5.9
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_trinary_minmax,
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, GL_ARB_base_instance,
GL_ARB_blend_func_extended, GL_ARB_buffer_storage,
GL_ARB_clear_buffer_object, GL_ARB_clip_control,
GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage,
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_derivative_control,
GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced,
GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_instanced_arrays,
GL_ARB_internalformat_query, GL_ARB_invalidate_subdata,
GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind,
GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query,
GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex,
GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects,
GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture,
GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding,
GL_ARB_shader_objects, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_stencil_texturing,
GL_ARB_sync, GL_ARB_texture_barrier, GL_ARB_texture_border_clamp,
GL_ARB_texture_compression, GL_ARB_texture_compression_bptc,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
GL_ARB_texture_swizzle, GL_ARB_texture_view, GL_ARB_timer_query,
GL_ARB_transform_feedback2, GL_ARB_transform_feedback3,
GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_window_pos, GL_ATI_blend_equation_separate, GL_ATI_draw_buffers,
GL_ATI_separate_stencil, GL_ATI_texture_compression_3dc,
GL_ATI_texture_env_combine3, GL_ATI_texture_float,
GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_copy_texture, GL_EXT_draw_buffers2, GL_EXT_draw_instanced,
GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB,
GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels,
GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,
GL_EXT_polygon_offset, GL_EXT_polygon_offset_clamp,
GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shader_integer_mix,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
GL_EXT_texture_array, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query,
GL_EXT_transform_feedback, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,
GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_KHR_context_flush_control, GL_KHR_debug, GL_MESA_pack_invert,
GL_MESA_texture_signed_rgba, GL_MESA_window_pos, GL_NV_blend_square,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fog_distance,
GL_NV_light_max_exponent, GL_NV_packed_depth_stencil,
GL_NV_primitive_restart, GL_NV_texgen_reflection, GL_NV_texture_barrier,
GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_NV_vdpau_interop,
GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.5.9
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_APPLE_texture_max_level, GL_EXT_blend_minmax,
GL_EXT_color_buffer_float, GL_EXT_discard_framebuffer,
GL_EXT_draw_buffers, GL_EXT_map_buffer_range, GL_EXT_multi_draw_arrays,
GL_EXT_read_format_bgra, GL_EXT_separate_shader_objects,
GL_EXT_shader_integer_mix, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888,
GL_EXT_texture_rg, GL_EXT_texture_type_2_10_10_10_REV,
GL_EXT_unpack_subimage, GL_KHR_context_flush_control, GL_NV_draw_buffers,
GL_NV_fbo_color_attachments, GL_NV_read_buffer, GL_OES_EGL_image,
GL_OES_EGL_image_external, GL_OES_compressed_ETC1_RGB8_texture,
GL_OES_depth24, GL_OES_depth_texture, GL_OES_depth_texture_cube_map,
GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,
GL_OES_get_program_binary, GL_OES_mapbuffer, GL_OES_packed_depth_stencil,
GL_OES_rgb8_rgba8, GL_OES_standard_derivatives, GL_OES_stencil8,
GL_OES_surfaceless_context, GL_OES_texture_3D, GL_OES_texture_npot,
GL_OES_vertex_array_object

240 GLX Visuals
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x021 24 tc 0 32 0 r y . 8 8 8 8 . . 0 24 8 0 0 0 0 0 0 None
0x022 24 dc 0 32 0 r y . 8 8 8 8 . . 0 24 8 0 0 0 0 0 0 None
0x1ea 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 0 0 0 0 0 0 None
0x1eb 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 16 16 16 16 0 0 Slow
etc...

360 GLXFBConfigs:
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x082 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 0 0 0 0 0 0 None
0x083 24 tc 0 32 0 r . . 8 8 8 8 . . 0 0 0 16 16 16 16 0 0 Slow
0x084 24 tc 0 32 0 r y . 8 8 8 8 . . 0 0 0 0 0 0 0 0 0 None
0x085 24 tc 0 32 0 r y . 8 8 8 8 . . 0 0 0 16 16 16 16 0 0 Slow
etc....

I switched back to the open source drivers in hopes it would help. No luck

snippet from Xorg log:
/var/log/Xorg.0.log:[    19.007] (II) LoadModule: "glx"
/var/log/Xorg.0.log:[ 19.009] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
/var/log/Xorg.0.log:[ 19.016] (II) Module glx: vendor="X.Org Foundation"
/var/log/Xorg.0.log:[ 19.016] (==) AIGLX enabled
/var/log/Xorg.0.log:[ 19.024] (==) NOUVEAU(0): GLX sync to VBlank enabled.
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_ARB_create_context
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_ARB_create_context_profile
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_INTEL_swap_event
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_EXT_framebuffer_sRGB
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: enabled GLX_ARB_fbconfig_float
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
/var/log/Xorg.0.log:[ 19.427] (II) AIGLX: Loaded and initialized nouveau
/var/log/Xorg.0.log:[ 19.428] (II) GLX: Initialized DRI2 GL provider for screen 0
sounds like the driver isn't correctly installed or malfunctioning, you could try going back to the proprietary and selecting a newer or older version (there should be multiple binary drivers in additional drivers)
RaidMax
Thanks for the suggestions, I've tried several versions, all with the same issue. What's funny, is I downloaded a simple WIndows OpenGL benchmark application, and ran it through wine with no issues. Are you using the latest Cutting Edge version?
Topic Starter
Franc[e]sco
yeah I'm running on cuttingedge. hmmm seems like nvidia drivers still have some issues, you could try beta or cuttingedge compatibility mode, but I really have no experience with nvidia drivers :\
RaidMax

Franc[e]sco wrote:

yeah I'm running on cuttingedge. hmmm seems like nvidia drivers still have some issues, you could try beta or cuttingedge compatibility mode, but I really have no experience with nvidia drivers :\
What's the process to put it in compatibility mode?
SebDaMuffin

RaidMax wrote:

What's the process to put it in compatibility mode?
There's a checkbox in the options menu.

However I use the closed source nvidia drivers and note no difference with compatibility mode. I get 1k+ fps regardless. osu is perfectly playable for me now on linux because of the delay being fixed, but I've never had fps issues. I had a geforce 8800 gts before and switched to a gtx 660. I'm not sure what the problem would be here but I can report extremely good fps performance with the closed source driver and those 2 cards. Not that I think it matters much but I'm using wine staging 1.7.51 patched with Francesco's winepulse on arch linux and nvidia drivers 352.41. Working sweet on stock kernel 4.1.8 and ck kernel too. Also works fine on both beta and cutting edge release streams for me. Are you sure the wine prefix is setup correctly?
RaidMax

SebDaMuffin wrote:

RaidMax wrote:

What's the process to put it in compatibility mode?
There's a checkbox in the options menu.

However I use the closed source nvidia drivers and note no difference with compatibility mode. I get 1k+ fps regardless. osu is perfectly playable for me now on linux because of the delay being fixed, but I've never had fps issues. I had a geforce 8800 gts before and switched to a gtx 660. I'm not sure what the problem would be here but I can report extremely good fps performance with the closed source driver and those 2 cards. Not that I think it matters much but I'm using wine staging 1.7.51 patched with Francesco's winepulse on arch linux and nvidia drivers 352.41. Working sweet on stock kernel 4.1.8 and ck kernel too. Also works fine on both beta and cutting edge release streams for me. Are you sure the wine prefix is setup correctly?
I have about racked my brains trying to fix this issue. I really think it's the wine prefix, so I'm going to try deleting it and starting again. I have a NVIDIA GeForce GTX 670. I locked 902 fps on windows, so I should be getting acceptable performance on here. Using nvidia-346 drivers and and 3.19.0-28-lowlatency for Ubuntu. I have literally done EVERYTHING to get OpenGL to see the 32bit libraries, so I really think it's wine. Will report back.
RaidMax
AT LAST. After untold hours, close to destroying my PC, I have succeeded! It ended up being the wine prefix. I had reset it previously, but for whatever reason something was still screwed up. Since I'm at work I wasn't able to play, but getting 120fps capped on the menu was 100x better than stable, so fingers crossed it will be nice and smooth :). Thanks for your help!
lonniganseaweed
Runs perfect on Debian 8 with XFCE. i5-4690k and AMD R9 280x. Interestingly, setting it to unlimited fps matches my monitor refresh (60Hz), but it runs 240 fps just fine. However, in winecfg, with winealsa.drv running, the test sound option did not work. The dmixer terminal test and osu sound just fine though, so it is just the winecfg.
Jmart_old
Hey dude, I appreciate the guide, but at the step where we fix the bancho disconnecting, I follow your exact instructions of replacing the user name with my own user and executing the command ALSA_DEFAULT_PCM="plug:dmixer" WINEPREFIX=~/.wine WINEARCH=win32 wine '~/.wine/drive_c/users/<your username>/Local Settings/Application Data/osu!/osu!.exe' leads to Ubuntu saying wine cannot find this. I have replaced my user name, and i have checked to see whether the directory was correct and it indeed was correct. I dont know what is causing this issue but it is preventing me from playing online, any helpful advice would be appreciated.
Topic Starter
Franc[e]sco

Jmart wrote:

Hey dude, I appreciate the guide, but at the step where we fix the bancho disconnecting, I follow your exact instructions of replacing the user name with my own user and executing the command ALSA_DEFAULT_PCM="plug:dmixer" WINEPREFIX=~/.wine WINEARCH=win32 wine '~/.wine/drive_c/users/<your username>/Local Settings/Application Data/osu!/osu!.exe' leads to Ubuntu saying wine cannot find this. I have replaced my user name, and i have checked to see whether the directory was correct and it indeed was correct. I dont know what is causing this issue but it is preventing me from playing online, any helpful advice would be appreciated.
try ~/.osu/drive_c/users/<your username>/"Local Settings"/"Application Data"/"osu!"

note that your username is your linux username, not osu username
ZarosTenjin
hey i've followed your tutorial and got osu running which is nice 8D thanks for the guide

The thing i'm not able to do however is get OpenGL to work. I must say though trying to change the release stream from stable(fallback) to cutting edge doesnt stick. it goes back to stable fallback immediatly and says osu is up to date. Got any idea whats going wrong?

Cheers
Zaros
kaiske

ZarosTenjin wrote:

hey i've followed your tutorial and got osu running which is nice 8D thanks for the guide

The thing i'm not able to do however is get OpenGL to work. I must say though trying to change the release stream from stable(fallback) to cutting edge doesnt stick. it goes back to stable fallback immediatly and says osu is up to date. Got any idea whats going wrong?

Cheers
Zaros
Exact same for me, and I also seem to have problem that RaidMax had, I get 50~ fps on nvidia gtx 770 and proprietary drivers, so I think it is not using proper driver or somehow
arihosu
Dude, awesome! I tried to set up osu! on Linux in the past but I never got it to work fully (either there was too much sound latency, input lag or low fps, etc). I followed your guide on a clean Xubuntu install and performance seems to be on par with Windows (at least at a first glance).

(don't mind the screenshot artifact)

My specs:
AMD Athlon II x4 620
ATI RadeonHD 6850
8GB ram

to ZarosTenjin and kaiske, I had the same problem, whenever I click on Cutting Edge the game would automatically go back to Stable (fallback). What I did is start the game in Windows, set it to Cutting edge there and then just copy the files over to the Linux partition, worked like a charm for me.
Topic Starter
Franc[e]sco
rev.6
added arihosu's advice for problems with switching to cutting edge
changed polling rate to 500hz because 1000hz can cause xorg to lag even on good cpu's
TheTanadu
hey, I have problem when I must connect to buncho.
I have that massage - what I can do if I don't have that? :o
http://i.imgur.com/f2lac6q.png
Someone could help? ;o
Topic Starter
Franc[e]sco

TheTanadu wrote:

hey, I have problem when I must connect to buncho.
I have that massage - what I can do if I don't have that? :o
http://i.imgur.com/f2lac6q.png
Someone could help? ;o
try
~/.osu/drive_c/users/<your username>/"Local Settings"/"Application Data"/"osu!"/"osu!.exe"
TheTanadu
exe not found :o but.. I do all of this in your post my master :D
http://imgur.com/WTGFf6g
Just crsor is like if I must something write. ;-; :D
Topic Starter
Franc[e]sco

TheTanadu wrote:

exe not found :o but.. I do all of this in your post my master :D
http://imgur.com/WTGFf6g
Just crsor is like if I must something write. ;-; :D
forgot to replace the wine profile
~/.wine/drive_c/users/<your username>/"Local Settings"/"Application Data"/"osu!"/"osu!.exe"
TheAussie
I have one problem with osu, the audio skips,pops, crackles and ive followed the guide. maybe you can help me? remotely or something.
TheTanadu
;_; I try but when I make that, I got "bash" to write something - first time I have problem with wine ;-; :D
http://imgur.com/zrNhuRd
or I'm stupid ;-;
TheAussie

TheTanadu wrote:

;_; I try but when I make that, I got "bash" to write something - first time I have problem with wine ;-; :D
http://imgur.com/zrNhuRd
or I'm stupid ;-;
Try This.

'~/.wine/drive_c/users/<your username>/Local\ Settings/Application\ Data/osu\!/osu\!.exe'
Topic Starter
Franc[e]sco

TheTanadu wrote:

;_; I try but when I make that, I got "bash" to write something - first time I have problem with wine ;-; :D
http://imgur.com/zrNhuRd
or I'm stupid ;-;
remove the single quote at the beginning
Topic Starter
Franc[e]sco

TheAussie wrote:

I have one problem with osu, the audio skips,pops, crackles and ive followed the guide. maybe you can help me? remotely or something.
does it also crackle during alsa audio tests?
TheAussie

Franc[e]sco wrote:

TheAussie wrote:

I have one problem with osu, the audio skips,pops, crackles and ive followed the guide. maybe you can help me? remotely or something.
does it also crackle during alsa audio tests?
No, it was when i switched to PulseAudio for OBS, but i have configured settings a bit different since then and it doesn't seem to be happening.
Nato Morichika
Can't get ce or beta run on wine :<

What I had installed in osu's prefix:
nat@nat ~ % ./winetricks list-installed       
baekmuk
corefonts
dotnet20
dotnet20sp1
dotnet30sp1
dotnet35
dotnet40
dotnet45
eufonts
gdiplus
gdiplus_winxp
msxml3
takao
unifont
wenquanyi
./winetricks list-installed 4.95s user 2.81s system 87% cpu 8.899 total

But when I try to switch to ce or beta, it automatically switch back to stable fallback. So I switch that on Windows as suggested. osu! did update itself to ce on Windows, but when I try to run it with wine, osu!update shows up and 'update' osu to stable fallback version... :I

I am not on linux, but OS X, not sure if that matter.
Topic Starter
Franc[e]sco

MagicNAT wrote:

Can't get ce or beta run on wine :<

What I had installed in osu's prefix:
nat@nat ~ % ./winetricks list-installed       
baekmuk
corefonts
dotnet20
dotnet20sp1
dotnet30sp1
dotnet35
dotnet40
dotnet45
eufonts
gdiplus
gdiplus_winxp
msxml3
takao
unifont
wenquanyi
./winetricks list-installed 4.95s user 2.81s system 87% cpu 8.899 total

But when I try to switch to ce or beta, it automatically switch back to stable fallback. So I switch that on Windows as suggested. osu! did update itself to ce on Windows, but when I try to run it with wine, osu!update shows up and 'update' osu to stable fallback version... :I

I am not on linux, but OS X, not sure if that matter.

why not use the beta osx build since you're on osx? maybe there are more graphical support issues with wine on osx
http://osx.ppy.sh/

also if it might help this is the list installed from a working install:
loli@jigoku:~$ WINEPREFIX=~/.wine WINARCH=win32 winetricks list-installed
corefonts
dotnet20sp1
dotnet20
dotnet30sp1
dotnet35
dotnet40
dotnet45
gdiplus
gdiplus_winxp
msxml3
takao
vcrun2008
vcrun2010
AGRX
peppy said its not possible to run anything else than stable on osx Wine build atm. Have to wait for native client ;/
Nato Morichika

Franc[e]sco wrote:

MagicNAT wrote:

Can't get ce or beta run on wine :<

What I had installed in osu's prefix:
nat@nat ~ % ./winetricks list-installed       
baekmuk
corefonts
dotnet20
dotnet20sp1
dotnet30sp1
dotnet35
dotnet40
dotnet45
eufonts
gdiplus
gdiplus_winxp
msxml3
takao
unifont
wenquanyi
./winetricks list-installed 4.95s user 2.81s system 87% cpu 8.899 total

But when I try to switch to ce or beta, it automatically switch back to stable fallback. So I switch that on Windows as suggested. osu! did update itself to ce on Windows, but when I try to run it with wine, osu!update shows up and 'update' osu to stable fallback version... :I

I am not on linux, but OS X, not sure if that matter.

why not use the beta osx build since you're on osx? maybe there are more graphical support issues with wine on osx
http://osx.ppy.sh/

also if it might help this is the list installed from a working install:
loli@jigoku:~$ WINEPREFIX=~/.wine WINARCH=win32 winetricks list-installed
corefonts
dotnet20sp1
dotnet20
dotnet30sp1
dotnet35
dotnet40
dotnet45
gdiplus
gdiplus_winxp
msxml3
takao
vcrun2008
vcrun2010
:D I had successfully runs it. Just enable the hide version option from wine, and osu! allows me to update.



Seems like this option is only available though wine-staging.
Topic Starter
Franc[e]sco
just finished testing my setup on gentoo and it runs smoothly at an average of 0.39ms frame time (almost 3k fps). Will update the guide with gentoo-related stuff tomorrow
NoYzE
Thx for the guide. I somehow got it running in Debian but not very good. Some Pulse/Alsa problems first, then background and Skin problems. Now some other problems with latency. For some reason Debian has no low-latency or rt-kernel for newer releases, because they say it's in the kernel already or something like that. I hope to see some native love for linux with the upcoming .NET Core but knowing peppy i doubt it^^
Topic Starter
Franc[e]sco
btw I managed to get both pulse and osu running in realtime scheduling on gentoo, I'm kinda busy atm but I will eventually update the guide
NoYzE
Besides the osu rant about deleting background makes it aaaangry i got the issues fixed now. (Bad idea to use the same config you used with windows) I have to use alsa directly and set offset to excactly -30 though, but i get latency < 1ms.
Topic Starter
Franc[e]sco

NoYzE wrote:

Besides the osu rant about deleting background makes it aaaangry i got the issues fixed now. (Bad idea to use the same config you used with windows) I have to use alsa directly and set offset to excactly -30 though, but i get latency < 1ms.

the winealsa.drv patch should chip off at least 10ms off that -30, also I suggest setting that as the map's offset, not global offset because at least 15-20ms of it are keyboard input latency caused by wine, because the audio sounds spot-on. or at least that's my case.
wobbol
To all the Arch Linux people: trying to keep 32bit software to a minimum, package lib32-gnutls is nessary for cuttingedge to aquire a connection to the OSU! server.

#glxinfo is here
# pacman -S mesa-demos

##
### get a good alsa interface for wine here
##

#make sure you have multilib
# nano /etc/pacman.conf

#install wine-stageing (just happens to be avalable from multilib)
# pacman -Syu wine-staging

#quell naggboxes about no geko or mono being avalable (these packages are not used to my knoledge)
# pacman -S wine_gecko wine-mono

#winetricks
# pacman -S winetricks


#install 32 bit libs for alsa(probably need more for pulse)
# pacman -S lib32-alsa-lib lib32-alsa-plugins

#
##Test wine audio here
#

#osu! requires gnutls (will also quiet some errors when installing dotnet45)
# pacman -S lib32-gnutls

#
## install dotnet45 corefonts
## download and install osu!


If switching to cutting edge gives you some trouble try what MagicNAT did
I had successfully runs it. Just enable the hide version option from wine, and osu! allows me to update.



Seems like this option is only available though wine-staging.
P.S. Please forgive my formatting :o im dead.
Jerod212
Is it helping to hide the wine version? Because when I do that a lot of number just dissapear in osu, everything work fine and i'm able to play but i'm not sure if a notice a cursor lag or not (i'm using a bamboo tablet)
Espionage724
Hmm, is using a lowlatency kernel recommended nowadays? I've asked the question in other places, and the general consensus was that it was pretty pointless on general-use workstations unless you did work with mechanics and machinery that require low latency. Not sure if it helps osu! that much vs a standard kernel, but unless osu! is the only thing you're doing on that computer to not care, throughput will be lower.

From my understanding, modded kernels and even SteamOS that advertise the use of a lowlatency kernel have tweaks done to it to also make it worthwhile for general desktop usage.

For Ubuntu and Debian, I'd recommend XanMod kernel: http://xanmod.org/

Liquorix is also an alright choice for Ubuntu and Debian: http://liquorix.net/

For openSUSE, pontostroy's drm-next kernel is nice (not certain if it's actually latency-optimized or if it's just bleeding-edge): http://download.opensuse.org/repositori ... /drm-next/

For Arch, Gentoo, and anyone wanting to manually patch the kernel for whatever distro they use, pf-kernel also looks really interesting: https://pf.natalenko.name/


And two other notes for the guide; disabling mouse acceleration with xset can be problematic or just not work depending on the input library being used (pretty sure it doesn't work at all with libinput). There's an Arch wiki page somewhere with a few better methods. Also the PPA link for Wine Staging is outdated (the staging wiki has the new PPA; too lazy to copy/paste atm lol).
show more
Please sign in to reply.

New reply