diff --git a/android/src/org/rockbox/RockboxService.java b/android/src/org/rockbox/RockboxService.java
index 3aeffa2..93f5e6a 100644
--- a/android/src/org/rockbox/RockboxService.java
+++ b/android/src/org/rockbox/RockboxService.java
@@ -175,7 +175,9 @@ public class RockboxService extends Service
             {
                 final int BUFFER = 8*1024;
                 String rockboxDirPath = "/data/data/org.rockbox/app_rockbox/rockbox";
+                String rockboxSdDirPath = "/sdcard/rockbox";
                 File rockboxDir = new File(rockboxDirPath);
+                File rockboxSdDir = new File(rockboxSdDirPath);
 
                 /* load library before unzipping which may take a while */
                 synchronized (lock) {
@@ -208,7 +210,15 @@ public class RockboxService extends Service
                            /* strip off /.rockbox when extracting */
                            String fileName = entry.getName();
                            int slashIndex = fileName.indexOf('/', 1);
-                           file = new File(rockboxDirPath + fileName.substring(slashIndex));
+                           if(fileName.substring(slashIndex).startsWith("/rocks")
+                               || fileName.substring(slashIndex).startsWith("/codecs"))
+                           {
+                               file = new File(rockboxDirPath + fileName.substring(slashIndex));
+                           }
+                           else
+                           {
+                               file = new File(rockboxSdDirPath + fileName.substring(slashIndex));
+                           }
 
                            if (!entry.isDirectory())
                            {
