FORUMS

Meraki MC74 Android Project [HW/SW] [Experience Required][Help][Android System Noob]

4 posts
Thanks Meter: 3
 
By sasha0413, Junior Member on 9th February 2020, 01:38 PM
Post Reply Email Thread
22nd May 2020, 07:47 PM |#11  
Junior Member
Thanks Meter: 1
 
More
Quote:
Originally Posted by ribo

My MC74 calls itself a 'test-phone' so it may be a little different software. The problem was that the 'recovery' mode installed on it was pretty subtle, nothing showed on the screen.

This is something that stumped me early on as well. But have no fear, all MCs run the same firmware, and you're not running different "test" firmware. The "test phone" value you're referring to is only seen in the recovery partition in the "default.prop" file, where "ro.product.model" is set to "BCM28155_TEST_PHONE". When booting normally, this value is set to "Meraki MC74" instead.

Quote:
Originally Posted by ribo

I managed to get an old version of 'linphone' working to the extent that I can make a call -- and can be heard -- but I haven't mastered the speakers (Android AudioManager/MediaPlayer, etc) so I can't hear the phone call. I can play audio speakerphone speaker, but can't play it on the handset speaker. Figuring out the Android Audio system for JellyBean is hard, the implementation has change a lot since then.

The way audio output works on the MC is a bit strange. In fact, it's not really Android's fault from what I can tell. However, I found that you have to "poke" the audio HAL to get it functioning somewhat normally (ie. getting audio to actually play through the speakers). You can do this by running the following command in the shell:

$ tinymix 1 1

At this point, you should be able to hear audio output through the speakers. Additionally, you should be able to switch between handset and speakerphone mode (so long as the app you're using allows you to do this).

Quote:
Originally Posted by ribo

I installed com.teslacoilsw.launcher-4.1.0-41000-minAPI16.apk as a launcher and told use it as the launcher rather than /data/app/com.meraki.dialer2-1.apk

You should delete the Dialer apk, you don't need it. In fact, you should delete the DroidNode.apk and DroidNodeSystemSvcs.apk files as well.

Quote:
Originally Posted by ribo

How did you stop the RGB LED from cycling through the colors? Does something like: /system/app/DroidNode.apk or /system/app/DroidNodeSystemSvcs.apk start the led cycling, then perahps com.meraki.dialer2 stop it -- when it initializes?

You need to modify "init.bcm911130_me1.rc" within "boot.img" and either remove or comment out the following:

Code:
service lightsd /system/bin/lightsd
    class main
    socket lightsd stream 600 system system
    user root
27th May 2020, 08:09 PM |#12  
Junior Member
Flag New York
Thanks Meter: 0
 
More
Controlling RGB LED on MC74
Thanks jazzcandle, I'll look into /system/bin/lightsd to see what it does.

lightsd seems to open ANDROID_SOCKET_lightsd and listen to /dev/socket/lightsd

It seems to directly write to these /sys files to change the LEDs through which must be controlled through the SOC's GPIO pins..

/sys/class/leds/red/brightness
/sys/class/leds/green/brightness
/sys/class/leds/blue/brightness
/sys/class/leds/white/delay_off
/sys/class/leds/white/brightness

/sys/class/gpio/export
/sys/class/gpio/gpio11/directionout
/sys/class/gpio/gpio11/value

am broadcast -a com.meraki.LIGHTSD_START

I would be great to know what all the GPIO devices did and their a addresses.

I've left the Dialer2, DroidNode and DroidNodeSystemSvcs apps running at this point to see what they do and how they are used. I agree that eventually they need to be removed because they connect to cisco/meraki web services when they start up.

I noticed that the com.meraki.dialer2.LEDController class is how the dialer controls the LEDs:

Quote:

public void notifyLeds(LedMode mode, int red, int green, int blue) {
this.r = red;
this.g = green;
this.b = blue;
this.m = mode;
sendLightCommand();
}

class LightCmd implements Consumer {
public void accept(Object o) {
Intent i = (Intent)o;
i.putExtra("red", r);
i.putExtra("green", g);
i.putExtra("blue", b);
Log.i(TAG, String.format("Broadcasting color change to rgb(%d, %d, %d)",
new Object[]{r, Integer.valueOf(g), Integer.valueOf(b)}));
ctx.sendBroadcast(i);
}
}

private void sendLightCommand() {
Consumer cons = new LightCmd();
getIntent().ifPresent(cons);
}

Methods ilke 'notifyLeds' takes a mode (Solid, Pulse, or Rainbow) and the R, G, B values and uses the sendLightCommand() method which broadcasts an intent that will probably be handled by something like the /system/bin/lightsd daemon. (I'm trying to document all these things for customizing/developing a SIP app.

I notice that the MC74 app is built on the PJSIP ( org.pjsip.pjua2 package) I was thinking of use the org.linphone SIP package. Anyone have experience with these SIP packages?
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes