diff --git a/SConstruct b/SConstruct
index 02e99f6..93798b1 100644
--- a/SConstruct
+++ b/SConstruct
@@ -30,7 +30,7 @@ import common
 #######################################################################
 # Configuration options
 
-default_statetrackers = 'mesa'
+default_statetrackers = ['mesa', 'python']
 default_targets = 'graw-null'
 
 if common.default_platform in ('linux', 'freebsd', 'darwin'):
diff --git a/src/gallium/state_trackers/python/SConscript b/src/gallium/state_trackers/python/SConscript
index aadeaa0..37efc83 100644
--- a/src/gallium/state_trackers/python/SConscript
+++ b/src/gallium/state_trackers/python/SConscript
@@ -51,6 +51,9 @@ if 'python' in env['statetrackers']:
         env.Append(CPPDEFINES = ['HAVE_SOFTPIPE'])
         env.Prepend(LIBS = [softpipe])
 
+    env.Prepend(LIBPATH = ['/home/tilman/devel/xorg/mesa/src/gallium/drivers/r600'])
+    env.Prepend(LIBPATH = ['/home/tilman/devel/xorg/mesa/src/gallium/winsys/r600/drm'])
+    env.Prepend(LIBS = ['r600', 'r600winsys'])
     env['no_import_lib'] = 1
 
     env.SharedLibrary(
diff --git a/src/gallium/state_trackers/python/st_device.c b/src/gallium/state_trackers/python/st_device.c
index dce24bc..136c4ad 100644
--- a/src/gallium/state_trackers/python/st_device.c
+++ b/src/gallium/state_trackers/python/st_device.c
@@ -26,6 +26,7 @@
  **************************************************************************/
 
 
+#include <stdio.h>
 #include "pipe/p_screen.h"
 #include "pipe/p_context.h"
 #include "pipe/p_shader_tokens.h"
@@ -87,6 +88,11 @@ st_device_create(boolean hardware)
    else
       screen = st_software_screen_create("softpipe");
 
+   if (!screen) {
+	   printf("no screen :(\n");
+	   goto no_screen;
+   }
+
    screen = trace_screen_create(screen);
    if (!screen)
       goto no_screen;
diff --git a/src/gallium/state_trackers/python/st_hardpipe_winsys.c b/src/gallium/state_trackers/python/st_hardpipe_winsys.c
index c6743db..a28c0bf 100644
--- a/src/gallium/state_trackers/python/st_hardpipe_winsys.c
+++ b/src/gallium/state_trackers/python/st_hardpipe_winsys.c
@@ -34,6 +34,8 @@
 
 #include "pipe/p_compiler.h"
 
+#include <stdio.h>
+
 #ifdef PIPE_OS_WINDOWS
 #include <windows.h>
 #include <GL/gl.h>
@@ -205,8 +207,32 @@ st_hardpipe_load(void)
 struct pipe_screen *
 st_hardware_screen_create(void)
 {
+#if 0
    if(st_hardpipe_load())
       return pfnGetGalliumScreenMESA();
    else
       return st_software_screen_create(NULL);
+#endif
+	void *ws;
+	int fd;
+
+	fprintf(stderr, "opening drm etc\n");
+
+	fd = drmOpen ("radeon", NULL);
+
+	if (fd < 0) {
+		fprintf(stderr, "drmOpen() failed\n");
+
+		return NULL;
+	}
+
+	ws = r600_drm_winsys_create (fd);
+
+	if (!ws) {
+		drmClose (fd);
+		fprintf(stderr, "cannot create winsys\n");
+		return NULL;
+	}
+
+	return r600_screen_create(ws);
 }
