Open Source CM10.1 for Dell Streak 7 continuation

Search This thread

ElfinJNoty

Senior Member
Jun 25, 2009
2,298
1,267
New Haven, CT
www.blissroms.com
LG G4
OnePlus 6
Wingray is a device that is supposed to have tegra 2, but there is an omnirom 4.4.2 build for it:
http://xdaforums.com/showthread.php?t=2580256

https://github.com/Schischu/android_device_moto_wingray/blob/android-4.4/BoardConfig.mk
Code:
TARGET_BOARD_PLATFORM := tegra
TARGET_TEGRA_VERSION := ap20

The streak7 has
Code:
TARGET_BOARD_PLATFORM := tegra
TARGET_TEGRA_VERSION := t20

No idea if this is useful. With a quick google search I didn't find any website that would list differences between them. Guess I'll just try to build it some time later.

Pleaselet us know

Sent from my Streak 7 using xda premium
 

ccxxx

Senior Member
Mar 4, 2013
89
33
Kernel is the issue here. Without an updated kernel, we cannot compile.
I find this very hard to google: Why exactly does android not run with older kernel versions? Does it use newer features? Does it depend on newer driver interfaces? Is this explained anywhere?
 

giveen

Senior Member
Jul 6, 2010
2,174
1,560
Caldwell, ID
I find this very hard to google: Why exactly does android not run with older kernel versions? Does it use newer features? Does it depend on newer driver interfaces? Is this explained anywhere?

In order to compile latest versions of Android, you need at least GCC 4.7, which does not compile our old kernel successfully. Our kernel will only compile with GCC 4.3 - 4.6
 

ccxxx

Senior Member
Mar 4, 2013
89
33
In order to compile latest versions of Android, you need at least GCC 4.7, which does not compile our old kernel successfully. Our kernel will only compile with GCC 4.3 - 4.6
So in theory there is nothing preventing me from compiling the kernel with the old GCC, dropping the binaries and headers into the 4.4 buil, comment out the kernel build there and then compiling it with the newer GCC? Sounds bad, but not too bad, Once you figure out the cluster**** that is the android build system.
 

giveen

Senior Member
Jul 6, 2010
2,174
1,560
Caldwell, ID
So in theory there is nothing preventing me from compiling the kernel with the old GCC, dropping the binaries and headers into the 4.4 buil, comment out the kernel build there and then compiling it with the newer GCC? Sounds bad, but not too bad, Once you figure out the cluster**** that is the android build system.

Completely possible but I remember a long time ago, doing stuff like that and Android build system was not happy.

Give it a try if you want:good:
I'm out of the Android business. Bachelors degree is keeping me busy, and right now CCNA is on the plate.
 

JimJ2Mz

Senior Member
Jan 3, 2013
228
105
Thank you.

It's been a very very long journey with the Streak.
I've finally picked my lazy self up to make 10 posts on this account to be able to post here and for a long time now, I wanted to say thank you to everyone who helped in the development of this now 3-4 year old device. From Honeycomb to DJSteve's HoneyStreak, and then from there to ICS and then CM10 and CM10.1 (AOKP now) from you, giveen. Seriously. I love trying out new things and I loved being able to run JB on this Streak, even if it wasn't fully functional. But as time passed, I had to put the device down and pick up a new one. I took in the Nook HD+ and, I am happy, but I sure am going to miss the Streak. I'll still keep the device so that maybe one day all the amazing devs might come back and work on this guy, whenever that is.
But, thank you.
That is all.
Oh, and I hope that you and everyone else here succeed in their endeavors now and in the future.
 
  • Like
Reactions: giveen

ElfinJNoty

Senior Member
Jun 25, 2009
2,298
1,267
New Haven, CT
www.blissroms.com
LG G4
OnePlus 6
I found this mod did good things for my streak:
http://xdaforums.com/showthread.php?t=2360670

After trial and error, I opened up the zip before flashing, and removed the "io tweaks" script in init.d
You could also just flash and then mount system while still in recovery, goto advanced-file manager, navigate to system-etc-init.d and delete the "io tweaks" script from there.

The mod contains elements of crossbreeder, among other scripts. But it includes entropy, and a dnsmasq(use search if you don't know what these do) which helps performance as well as loading web pages/web based apps much faster.

Also other build.prop tweaks and various other settings, as a universal mod, that improve user experience quite a bit on this ancient device.

PurePerformance™X gets my endorsement for the Streak7
 

ccxxx

Senior Member
Mar 4, 2013
89
33
Just a short summary:

The latest vcs snapshot of AOKP's 4.2 doesn't compile anymore - AOKP doesn't bother fixing or updating it anymore because it's obsolete.

It should be possible to make 4.4 work on tegra2 devices like the streak 7. From what I heard from giveen the only problem is that the kernel does not compile with the newer gcc from the Android 4.4 SDK.

I have little experience with c and linux kernel development, but fixing a few errors between gcc versions - how hard can it be? I may actually look into this when I have a lot of free time. Because the Streak 7 is still here on my table not doing much right now.

Actually... I have googled and here is a quote: "galaxy tab 10.1 which is a tegra 2 device running AOSP Lollipop". I wonder: Can Android 5 work on it?
 

ElfinJNoty

Senior Member
Jun 25, 2009
2,298
1,267
New Haven, CT
www.blissroms.com
LG G4
OnePlus 6
Just a short summary:

The latest vcs snapshot of AOKP's 4.2 doesn't compile anymore - AOKP doesn't bother fixing or updating it anymore because it's obsolete.

It should be possible to make 4.4 work on tegra2 devices like the streak 7. From what I heard from giveen the only problem is that the kernel does not compile with the newer gcc from the Android 4.4 SDK.

I have little experience with c and linux kernel development, but fixing a few errors between gcc versions - how hard can it be? I may actually look into this when I have a lot of free time. Because the Streak 7 is still here on my table not doing much right now.

Actually... I have googled and here is a quote: "galaxy tab 10.1 which is a tegra 2 device running AOSP Lollipop". I wonder: Can Android 5 work on it?

I really hope that you do look into it and share your results. If it is possible to create a build that is finally stable for the Streak7, it would be awesome! What we have just isn't usable on any sort of realistic level... Painfully slow at times. And I do believe the kernel is the true issue. I was trying to get help a few months back to implant some modules into the existing kernel to get things such as lastkmsg.... So that another Dev could help in making their performance mod be compatible with your build. Unfortunately, we could not get the kernel to compile correctly so that the Streak would boot.

Kk and/or lollipop would be a hugeeee step up in the way the system would perform
 

skaskater1

Member
Sep 20, 2010
44
2
Las Vegas
Gapps

Does anyone happen to have a copy of the non-neon Gapps in 1st post? Goo.im is down, so i cannot download. would love to get my old DS7 back up and running even if only semi-functional.

Thanks in advance
 

Top Liked Posts

  • There are no posts matching your filters.
  • 6
    Just got accept into the CM Installer beta, will be doing my new phone and the Dell Streak 7
    https://plus.google.com/110558071969009568835/posts/Q3ewmAc8b8Q
    5


    First you need to have giveen's original port installed: http://goo.im/devs/giveen/jellystreak (via the old thread: http://xdaforums.com/showthread.php?t=2130081). The most important thing this does is installing the TWRP "recovery" bootmenu thingy. You can use it when powering on/restarting the dell streak 7 and then keeping power+volup pressed and then choosing "install update from sdcard" or so.

    With AOKP there is one install image that wipes /system and an ota update. I have not tested the ota update.
    Download for the AOKP 4.2 build for the Dell Streak 7: http://w3studi.informatik.uni-stuttgart.de/~haagch/aokp/

    The non-ota update wipes /system. So you have to reinstall gapps every time too, preferably before rebooting (android deletes settings for apps that are not installed I think).
    The "official" gapps package uses neon instructions that don't work on tegra2. You'll see the keyboard, tts, etc. crashing all the time. "tonyp" has created a gapps package that uses "old" libraries that work without neon instructions. So you should use this instead of the official gapps:
    Download for non-neon gapps: http://goo.im/devs/tonyp/non-neon-gapps
    Gesture typing on the keyboard doesn't seem to work for me, but tts works and it doesn't seem to be crashing.

    Known issues for me:
    • [*]sensors don't work: rotation, accelerometer, gps (I think), magnet field (Sensor driver is sensors.p3.so for now, maybe later giveen gets open source drivers to work)
    • headphone jack doesn't mute/transfer for some headsets like ones with built in microphones
    • bluetooth keyboard
    • Performance problems. Especially when the ram gets full. You can use a ram manager like https://play.google.com/store/apps/details?id=com.jrummy.apps.memory.manager with the Aggressive or Extreme preset to make that problem go away with the cost of background apps being killed very quickly.


    Here is the repository: https://github.com/ChristophHaag/android_device_dell_streak7
    And here is how to build it on Archlinux:
    AOKP: https://gist.github.com/ChristophHaag/6334554
    Cyanogenmod: https://gist.github.com/ChristophHaag/6078249


    I'm new to android but maybe some other people know something, so I post whatever I come about. Maybe someone else wants to get started too and finds this helpful.

    If you want to engage in bug finding and fixing yourself:
    Remote debugging c works like this:
    On the android device you do
    Code:
    gdbserver --remote-debug :5039 --attach 1
    Which will attach gdbserver to the process with pid 1 and listen on port 5039 on all interfaces.
    For a gui debugger I tried nemiver:
    For $ANDROID I use the path where the cyanogenmod was checked out.
    Code:
    nemiver --remote=<STREAK7-IP>:5039 --gdb-binary=$ANDROID/android/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gdb --solib-prefix=$ANDROID/android/system/out/target/product/streak7/symbols/ $ANDROID/android/system/out/target/product/streak7/symbols/init
    And in edit-preferences for sources I added some paths like symbols/, symbols/system/lib and the android/system directory.

    There's also a statically compiled gdb that you can use over ssh or so: http://dan.drown.org/android/howto/gdb.html

    Obsolete first look into the CyanogenMod adb bug:
    I think the problem is in line 1068 in init.c
    Code:
            if (!action_queue_empty() || cur_action)
                timeout = 0;
    each time I looked when it comes there the cur_action->name was "property:sys.usb.config=none".



    Maybe it is connected with the adb issue. When I googled for the
    Code:
    E/UsbDebuggingManager(  367): Communication error: 
    E/UsbDebuggingManager(  367): java.io.IOException: No such file or directory
    E/UsbDebuggingManager(  367):   at android.net.LocalSocketImpl.connectLocal(Native Method)
    E/UsbDebuggingManager(  367):   at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:238)
    E/UsbDebuggingManager(  367):   at android.net.LocalSocket.connect(LocalSocket.java:108)
    E/UsbDebuggingManager(  367):   at com.android.server.usb.UsbDebuggingManager.listenToSocket(UsbDebuggingManager.java:79)
    E/UsbDebuggingManager(  367):   at com.android.server.usb.UsbDebuggingManager.run(UsbDebuggingManager.java:115)
    E/UsbDebuggingManager(  367):   at java.lang.Thread.run(Thread.java:856)
    issue I found surprisingly many people having issues with this, but few answers.
    But I also found e.g. this: https://gist.github.com/steven676/5...c-remove-obsolete-ro.debuggable-1-trigg.patch
    so the problem may be in https://github.com/ChristophHaag/an...lob/master/prebuilts/root/init.streak7.usb.rc
    but I didn't have time to really read documentation to that.

    I think this file complements $ANDROID/system/core/rootdir/init.usb.rc

    I'll either play around with that or I'll add debug output in android.net.LocalSocketImpl.connect(LocalSocketImpl.java:238)
    Code:
            connectLocal(fd, address.getName(), address.getNamespace().getId());
    Then I would at least know what it's trying to do and it would get easier.

    Many of the results I saw from googling mentioned that it might have to do with netd.
    On the streak 7 I get this:
    Code:
    cat /dev/socket/netd 
    cat: can't open '/dev/socket/netd': No such device or address
    I'm not sure if this is how it should behave...

    An observation is that adbd run from a command line seems to start without an issue and listens on a port specified with
    Code:
    setprop service.adb.tcp.port 5555
    but the access over adb connect <STREAK7-IP> does only say "unauthorized". And "start adbd" does nothing. None of the programs seem to have --help or -h, so I have to look closer into whether they can be started directly.

    I'll change "[ro.adb.secure]: [1]" in /default.prop to 0 and see whether that does anything.

    In the other thread from giveen I said that I don't see the log spam. This was with debugging in the developer settings disabled. When I enable it, the logspam starts. But whether it is enabled or not, init still eats 100% cpu. The trouble with the debugging is that each time it is enabled and I want to disable it, the streak 7 immediately reboots.

    Now that I had logcat via ssh running I caught this when the reboot happened:
    Code:
    W/dalvikvm(  367): threadid=50: thread exiting with uncaught exception (group=0x40b0e930)
    E/AndroidRuntime(  367): *** FATAL EXCEPTION IN SYSTEM PROCESS: UsbDebuggingHandler
    E/AndroidRuntime(  367): java.lang.NullPointerException
    E/AndroidRuntime(  367):        at com.android.server.usb.UsbDebuggingManager.closeSocket(UsbDebuggingManager.java:125)
    E/AndroidRuntime(  367):        at com.android.server.usb.UsbDebuggingManager.access$200(UsbDebuggingManager.java:46)
    E/AndroidRuntime(  367):        at com.android.server.usb.UsbDebuggingManager$UsbDebuggingHandler.handleMessage(UsbDebuggingManager.java:177)
    E/AndroidRuntime(  367):        at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime(  367):        at android.os.Looper.loop(Looper.java:137)
    E/AndroidRuntime(  367):        at android.os.HandlerThread.run(HandlerThread.java:60)
    Looks bad.

    For looking at the android code I just use grep and ls with globbing for the c and config files and for the java part I imported it in eclipse via this method: http://source.android.com/source/using-eclipse.html

    This is a build I haven't tested yet: http://w3studi.informatik.uni-stuttgart.de/~haagch/cm-10.1-20130820-UNOFFICIAL-streak7.zip
    This is giveen's original nvflash that I am not sure I am allowed to put there as giveen has not put any license information in there: http://w3studi.informatik.uni-stuttgart.de/~haagch/JB_Beta2.1.zip But then it's all apache code and there are no notices in reagards to the apache license or changed files anyway. If not, you can just tell me and I'll remove it.


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


    So the call to connectLocal() that throws the exception has as parameters
    fd: FileDescriptor[263]
    address namespace: RESERVED with address name space id: 1 and address name: adbd

    That doesn't help me much yet, but there are frequent calls with FileDescriptor[263] and namespace RESERVED, id 1, name rild (radio service) that don't throw an exception.

    So it's a "valid" file descriptor... But I think the problem is still that adbd is not started by init...
    The whole UsbDebuggingManager.run method is
    Code:
        public void run() {
            while (mAdbEnabled) {
                try {
                    listenToSocket();
                } catch (Exception e) {
                    /* Don't loop too fast if adbd dies, before init restarts it */
                    SystemClock.sleep(1000);
                }
            }
        }
    where listeToSocket() is ultimately throwing the exception.

    I have also read a bit about how adbd is supposed to work. Apparently in android 4.2.2 they introduced rsa encryption. It looks very similar to ssh. You have your authorized public keys on the device in /data/misc/adb/adb_keys (like ~/ssh/authorized_keys) and on your computer you have your public key in ~/.android/adbkey.pub

    So I put my ~/.android/adbkey.pub in /data/misc/adb/adb_keys on the streak 7 and started adbd from the command line on the device. And indeed, when I connect with "adb connect <STREAK7-IP>" I get "<STREAK7-IP>:5555 device product:cm_streak7 model:Streak_7 device:streak7" with "adb devices -l" and adb shell works. It's a bit unrelated, but this applies: https://code.google.com/p/android/issues/detail?id=48126

    But the actually important part, the "start adbd" still doesn't do anything.

    It really must be somethin with /init.streak7.usb.rc. The stuff in /sys/class/android_usb/android0/ seem to be set all wrong...


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


    I'll just keep posting random things I discover that I find strange or interesting and if anyone knows anything about any of those, they can just chime in.

    In /init.streak7.usb.rc there is the line
    Code:
    write /sys/class/android_usb/android0/iProduct $ro.product.model
    "getprop ro.product.model" says "Streak 7" but /sys/class/android_usb/android0/iProduct apparently doesn't seem to be able to take a string with a space because "cat /sys/class/android_usb/android0/iProduct" returns "Streak". You can write directly to it with "cat "Streak 7" > /sys/class/android_usb/android0/iProduct" but it only saves up to the space. I don't think that's really a problem but strange anyway.

    I have googled for another tegra 2 device and looked at its usb init rc: https://raw.github.com/CyanogenMod/android_device_samsung_p4-common/ics/init.p3.usb.rc
    Adding a section with on property:sys.usb.config=adb did nothing and it seems I haven't been able to google what should be in /sys/class/android_usb/android0/idProduct for the streak 7.

    I think I'll just look into how init on android works and how the triggers work. Then it shouldn't be too hard to figure out what exactly it is trying to do and why it is failing.


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


    I was trying to get my head around why "getprop sys.usb.config" would always return "none" and the system wouldn't respond to "setprop sys.usb.config adb,mtp" in any way. So I got to suspect that /init.streak7.usb.rc was not used at all. Then I compared the imports and found that /init.streak7.rc did use a relative path for /init.streak7.usb.rc while all the other init*.rc were using absolute paths.

    So I'm not sure if it this is really the thing that fixed it, but it's the latest thing I tested and now init's 100% cpu and adb are fixed: https://github.com/ChristophHaag/an...mmit/eee0625e11cfafd510c3bada6ae67a133766c0f4

    Edit: Wait, it happened again. Maybe not. :/

    Hm, no, definitely not it. Can't even reproduce it. It worked after adb sideload and wiping the cache and the dalvik cache.

    At least it's clear now that init's 100% cpu usage and adb not working and the dalvik crash when disabling debugging are all the same issue.

    5
    Good. Now i can focus my energy on the camera.
    3
    O, so I tried out of curiosity whether jb-mr2 would work or even compile and it doesn't really. The build system already really seems to contain some stuff that's not supported anymore.

    But because of this I have made a completely clean rebuild (edit: Not true actually, the CCACHE from earlier was used) with jb-mr1 and then I adb sideload'ed the ota update. The sensors still work.

    http://w3studi.informatik.uni-stuttgart.de/~haagch/aokp/aokp_streak7-ota-eng.c-builder.zip
    http://w3studi.informatik.uni-stuttgart.de/~haagch/aokp/aokp_streak7_unofficial_2013-08-30.zip
    2
    Thanks for your hard work on this! Giveen and Ccxxx, you guys rock. This has really brought this tablet back to life. Adding Operation Killjoy also really made a difference. Thanks ElfinJNoty and Tquarter for the suggestion and settings.

    Is there a way to turn the cell phone/data portion off permanently via build.prop or something? I don't pay for data on mine, so all the cell modem does is drain battery.

    Thanks again! :good: