Where can I go from this de-bricking QD Load error? - ONE Q&A, Help & Troubleshooting

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
https://github.com/jcsullins/qdloader/blob/master/qdload.pl#L613
Line 613 is where this occurs.
Whenever I try and flash things over Linux using qdload.pl this error is the result. Linux right now is my only option for debricking my device, since none of the windows applications are capable of removing it from the state that it is in.
The msm8974 downloader tools and their variants, along with tools like qpst are all capable of rebuilding partition tables and any damage that may have been done to the emmc as far as I'm aware, since I got my friend to wipe everything through twrp commands on his OPO and the ColorOs Download tool fully restored him from that state.
What I'm hoping is that someone can create a script I can use in linux that is capable of formatting /dev/ on my device and 'unblocking' whatever it is that is holding all these tools back so to speak. Any help at all is greatly
appreciated.
Please don't repost the various hardbrick tutorials, I've seen enough of them, and no, those tools aren't capable of fixing my device.
Code:
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Fcntl;
$| = 1;
my @crcTable = (
0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
);
sub writeMagic {
my $fd = shift;
return undef
if (
!sendPacket(
$fd,
deserialize(
"01 51 43 4f 4d 20 66 61 73 74 20 64 6f 77 6e 6c 6f 61 64 20 70 72 6f 74 6f 63 6f 6c 20 68 6f 73 74 03 03 09"
)
)
);
return 1;
}
sub writeChunk {
my $fd = shift;
my $address = shift;
my $chunk = shift;
my $length = length($chunk);
my $response;
#print "Writing chunk...\n";
if (
!sendPacket(
$fd,
deserialize(
"0f "
. serial32($address) . " "
. serial16($length) . " "
. serialize($chunk)
)
)
)
{
print "Failed to send chunk.\n";
return undef;
}
if ( !( $response = readPacket( $fd, 2.0 ) ) ) {
print "Failed to get response.\n";
return undef;
}
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 1 || $responseBytes[0] != 2 ) {
print "Invalid Response: ", serialize($response), "\n";
return undef;
}
return 1;
}
sub writeChunk2 {
my $fd = shift;
my $address = shift;
my $chunk = shift;
my $sentPacketsRef = shift;
my $length = length($chunk);
my $response;
#print "Writing chunk...\n";
if (
!sendPacket(
$fd,
deserialize(
"07 " . serial32le($address) . " " . serialize($chunk)
)
)
)
{
print "Failed to send chunk.\n";
return undef;
}
$sentPacketsRef->{ sprintf( "%0.8x", $address ) } = 1;
my $outstanding = scalar keys %{$sentPacketsRef};
my $acktimeout;
if ( $outstanding > 8 ) {
$acktimeout = 2.0;
}
elsif ( $outstanding > 4 ) {
$acktimeout = 0.25;
}
else {
$acktimeout = 0.01;
}
$acktimeout = 10.0;
while ( $response = readPacket( $fd, $acktimeout ) ) {
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 5 || $responseBytes[0] != 8 ) {
print "Invalid Response: ", serialize($response), "\n";
exit 1;
}
my $ackpacket;
$ackpacket = sprintf(
'%.2x%.2x%.2x%.2x',
$responseBytes[4], $responseBytes[3],
$responseBytes[2], $responseBytes[1]
);
delete $sentPacketsRef->{$ackpacket};
$outstanding = scalar keys %{$sentPacketsRef};
print "Response: ACK 0x", $ackpacket, " (outstanding: ",
$outstanding, ")\n";
if ( $outstanding == 0 ) {
$acktimeout = 0.0001;
}
}
return 1;
}
sub uploadFile {
my $fd = shift;
my $address = shift;
my $filename = shift;
local $/ = undef;
return undef if ( !open( FILE, $filename ) );
my $data = <FILE>;
close FILE;
while ( length $data ) {
my $chunk = substr( $data, 0, 1024 );
my $restOfData =
substr( $data, length($chunk), length($data) - length($chunk) );
print "Writing ", length($chunk), " bytes to 0x",
sprintf( '%.8x', $address ), "; ", length($restOfData),
" bytes left.\n";
if ( !writeChunk( $fd, $address, $chunk ) ) {
print "uploadFile failed.\n";
exit 1;
}
$address += length($chunk);
$data = $restOfData;
}
return 1;
}
sub uploadFile2 {
my $fd = shift;
my $address = shift;
my $filename = shift;
my $response;
my %sentPackets = ();
local $/ = undef;
return undef if ( !open( FILE, $filename ) );
my $data = <FILE>;
close FILE;
while ( length $data ) {
my $chunk = substr( $data, 0, 1024 );
my $restOfData =
substr( $data, length($chunk), length($data) - length($chunk) );
print "Writing ", length($chunk), " bytes to 0x",
sprintf( '%.8x', $address ), "; ", length($restOfData),
" bytes left.\n";
return undef
if ( !writeChunk2( $fd, $address, $chunk, \%sentPackets ) );
$address += length($chunk);
$data = $restOfData;
#select(undef, undef, undef, 0.1);
}
my $numout = scalar keys %sentPackets;
while ( $numout > 0 ) {
if ( !( $response = readPacket( $fd, 5.0 ) ) ) {
print "Failed to receive ACK for ", $numout, " packets\n";
foreach my $packet ( keys %sentPackets ) {
print "Outstanding: 0x", $packet, "\n";
}
exit 1;
}
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 5 || $responseBytes[0] != 8 ) {
print "Invalid Response: ", serialize($response), "\n";
exit 1;
}
my $ackpacket;
$ackpacket = sprintf(
'%.2x%.2x%.2x%.2x',
$responseBytes[4], $responseBytes[3],
$responseBytes[2], $responseBytes[1]
);
delete $sentPackets{$ackpacket};
$numout = scalar keys %sentPackets;
print "Response: ACK 0x", $ackpacket, " (outstanding: ", $numout, ")\n";
}
return 1;
}
sub getSoftwareVersion {
my $fd = shift;
my $response;
return undef if ( !sendPacket( $fd, deserialize("0c") ) );
return undef if ( !( $response = readPacket($fd) ) );
my @responseBytes = unpack( 'C*', $response );
if ( $responseBytes[0] != 0x0d ) {
print "Invalid Response: ", serialize($response), "\n";
return undef;
}
return pack( 'C*',
map { hex } split( /\s/, serialize( substr( $response, 2 ) ) ) );
}
sub setupTTY {
my $tty;
my $fd;
my @usbDevices;
my @devices =
grep { !/\:/ && !/usb/ }
map { ( split( /\//, $_ ) )[-1] } glob '/sys/bus/usb/devices/*';
foreach my $device (@devices) {
my $product = getFile("/sys/bus/usb/devices/$device/idProduct");
my $vendor = getFile("/sys/bus/usb/devices/$device/idVendor");
next if ( !defined $product || !defined $vendor );
if ( $vendor eq '05c6' && $product eq '9008' ) {
# it's us.
my @drivers = grep /^$device:\d+\.\d+$/,
map { ( split( /\//, $_ ) )[-1] }
glob "/sys/bus/usb/devices/$device/$device:*";
foreach my $driver (@drivers) {
my @ttys =
map { ( split( /\//, $_ ) )[-1] }
glob "/sys/bus/usb/devices/$device/$driver/tty*";
if ( scalar @ttys == 1 ) {
$tty = "/dev/$ttys[0]";
}
}
}
}
if ( defined $tty ) {
system "/bin/stty raw -iexten -echo < $tty";
return undef if ( !sysopen( $fd, $tty, O_RDWR | O_SYNC ) );
return ( $fd, $tty );
}
return undef;
}
sub getFile {
my $file = shift;
local $/ = undef;
return undef if ( !open( FILE, $file ) );
my $content = <FILE>;
$/ = "\n";
close FILE;
chomp $content;
return $content;
}
sub execute {
my $fd = shift;
my $address = shift;
my $response;
if ( !sendPacket( $fd, deserialize( "05 " . serial32($address) ) ) ) {
print "Failed to send packed\n";
print "execute failed\n";
exit 1;
}
if ( !( $response = readPacket( $fd, 5.0 ) ) ) {
print "Failed to get response.\n";
print "execute failed\n";
exit 1;
}
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 1 || $responseBytes[0] != 2 ) {
print "Invalid Response: ", serialize($response), "\n";
print "execute failed\n";
exit 1;
}
return 1;
}
sub serialize {
my $buffer = shift;
return join( ' ', map { sprintf( '%.2x', $_ ) } unpack( 'C*', $buffer ) );
}
sub deserialize {
my $buffer = shift;
return pack( 'C*', map { hex } split( /\s+/, $buffer ) );
}
sub crcByte {
my $crc = shift;
my $c = shift;
return ( ( $crc >> 8 ) & 0xffff ) ^ $crcTable[ ( $crc ^ $c ) & 0xff ];
}
sub crc {
my $crc = shift;
my $buffer = shift;
my @bytes = unpack( 'C*', $buffer );
foreach (@bytes) {
$crc = crcByte( $crc, $_ );
}
return ~$crc & 0xffff;
}
sub swap16 {
my $short = shift;
return ( ( $short << 8 ) | ( $short >> 8 ) ) & 0xffff;
}
sub swap32 {
my $long = shift;
return ( ( $long << 24 ) | ( ( $long & 0xff00 ) << 8 ) |
( ( $long & 0xff0000 ) >> 8 ) | ( $long >> 24 ) );
}
sub setupPacket {
my $packet = shift;
my $crc = swap16( crc( 0xffff, $packet ) );
return deserialize( "7e "
. serialize( escape( $packet . deserialize( serial16($crc) ) ) )
. " 7e" );
}
sub escape {
my $buffer = shift;
my @bytes = unpack( 'C*', $buffer );
my @newBytes;
foreach my $byte (@bytes) {
if ( $byte == 0x7e ) {
push @newBytes, 0x7d;
push @newBytes, 0x5e;
}
elsif ( $byte == 0x7d ) {
push @newBytes, 0x7d;
push @newBytes, 0x5d;
}
else {
push @newBytes, $byte;
}
}
return pack( 'C*', @newBytes );
}
sub unescape {
my $buffer = shift;
my @bytes = unpack( 'C*', $buffer );
my @newBytes;
my $escape = 0;
foreach my $byte (@bytes) {
if ($escape) {
if ( $byte == 0x5e ) {
push @newBytes, 0x7e;
}
elsif ( $byte == 0x5d ) {
push @newBytes, 0x7d;
}
else {
print "Fatal error unescaping buffer!\n";
return undef;
}
$escape = 0;
}
else {
if ( $byte == 0x7d ) {
$escape = 1;
}
else {
push @newBytes, $byte;
}
}
}
return pack( 'C*', @newBytes );
}
sub serial16le {
my $short = shift;
my $lbyte = $short & 0xff;
my $hbyte = $short >> 8;
return sprintf( '%.2x %.2x', $lbyte, $hbyte );
}
sub serial32le {
my $long = shift;
my $lshort = $long & 0xffff;
my $hshort = $long >> 16;
return serial16le($lshort) . ' ' . serial16le($hshort);
}
sub serial16 {
my $short = shift;
my $lbyte = $short & 0xff;
my $hbyte = $short >> 8;
return sprintf( '%.2x %.2x', $hbyte, $lbyte );
}
sub serial32 {
my $long = shift;
my $lshort = $long & 0xffff;
my $hshort = $long >> 16;
return serial16($hshort) . ' ' . serial16($lshort);
}
sub readPacket {
my $fd = shift;
my $timeout = shift;
my $rfhbits = "";
my $byte;
if ( defined($timeout) ) {
vec( $rfhbits, fileno($fd), 1 ) = 1;
return undef unless select( $rfhbits, undef, undef, $timeout ) >= 0;
return undef unless vec( $rfhbits, fileno($fd), 1 );
}
my $retval = sysread( $fd, $byte, 1 );
if ( 0 && !$retval ) {
print "readPacket_retval: $retval\n";
print "$!\n";
}
return undef if ( !$retval );
return undef if ( unpack( 'C', $byte ) != 0x7e );
my @bytes;
while (1) {
$retval = sysread( $fd, $byte, 1 );
if ( !$retval ) {
if (0) {
print "retval (while): $retval\n";
print "$!\n";
}
return undef;
}
last if ( unpack( 'C', $byte ) == 0x7e );
push @bytes, unpack( 'C', $byte );
}
my $buffer = unescape( pack( 'C*', @bytes ) );
#print "RECEIVED: " . serialize($buffer) . "\n";
@bytes = unpack( 'C*', $buffer );
pop @bytes;
pop @bytes;
return deserialize( join( ' ', map { sprintf( '%.2x', $_ ) } @bytes ) );
}
sub sendPacket {
my $fd = shift;
my $buffer = shift;
#print "SENDING: ", serialize(setupPacket($buffer)), "\n";
my $retval =
syswrite( $fd, setupPacket($buffer), length( setupPacket($buffer) ) );
if ( !$retval ) {
print "$!\n";
}
return undef if ( !$retval );
return 1;
}
sub doMagic {
my $fd = shift;
my $response;
print "Sending MAGIC...\n";
writeMagic($fd);
my $haveGoodResponse = 0;
my $haveErrorResponse = 0;
my $haveUnknownResponse = 0;
while ( $response = readPacket( $fd, 2 ) ) {
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes > 35 && $responseBytes[0] == 0x02 ) {
my $magicCodeCheck = "QCOM fast download protocol targ";
my $magicCodeRecvd = substr( $response, 1, 32 );
if ( $magicCodeRecvd eq $magicCodeCheck ) {
$haveGoodResponse = 1;
}
}
elsif ( $responseBytes[0] == 0x0e ) {
# msg
my $msg = pack( 'C*',
map { hex }
split( /\s/, serialize( substr( $response, 1 ) ) ) );
$msg =~ tr/\n/ /;
$msg =~ tr/\r/ /;
print "MSG: ", $msg, "\n";
}
elsif ( $responseBytes[0] == 0x0d ) {
# error
$haveErrorResponse = 1;
my $msg = pack( 'C*',
map { hex }
split( /\s/, serialize( substr( $response, 5 ) ) ) );
$msg =~ tr/\n//d;
$msg =~ tr/\r//d;
print "ERROR: ", $msg, "\n";
}
else {
$haveUnknownResponse = 1;
print "Response: ", serialize($response), "\n";
}
}
if ( $haveGoodResponse != 1
|| $haveErrorResponse == 1
|| $haveUnknownResponse == 1 )
{
print "Invalid MAGIC response.\n";
exit 1;
}
}
sub doSoftwareVersion {
my $fd = shift;
my $response;
print "Requesting SoftwareVersion...\n";
my $swver = getSoftwareVersion($fd);
if ( !defined $swver ) {
print "Failed to get software version\n";
exit 1;
}
print "Version: $swver\n";
}
sub doRequestDload {
my $fd = shift;
my $response;
print "Requesting Dload...\n";
if ( !sendPacket( $fd, deserialize("3a") ) ) {
print "Failed requestDload\n";
exit 1;
}
print "requestDload send ok\n";
if ( !( $response = readPacket($fd) ) ) {
print "Failed to read response.\n";
exit 1;
}
print "Param: ", serialize($response), "\n";
}
sub doReboot {
my $fd = shift;
my $response;
print "Requesting Reboot...\n";
if ( !sendPacket( $fd, deserialize("0a") ) ) {
print "Failed requestReboot\n";
exit 1;
}
print "requestReboot send ok\n";
if ( !( $response = readPacket($fd) ) ) {
print "Failed to read response.\n";
exit 1;
}
print "Param: ", serialize($response), "\n";
}
sub doRequestParam {
my $fd = shift;
my $response;
print "Requesting Params...\n";
if ( !sendPacket( $fd, deserialize("07") ) ) {
print "Failed requestParam\n";
exit 1;
}
if ( !( $response = readPacket($fd) ) ) {
print "Failed to read response.\n";
exit 1;
}
my @responseBytes = unpack( 'C*', $response );
if ( $responseBytes[0] != 8 ) {
print "Invalid Response: ", serialize($response), "\n";
exit 1;
}
print "Params: ", serialize( substr( $response, 1 ) ), "\n";
}
#####
##### second stage cmds
#####
sub doCloseFlush {
my $fd = shift;
my $response;
print "Sending CloseFlush...\n";
if ( !sendPacket( $fd, deserialize("15") ) ) {
print "Failed CloseFlush\n";
exit 1;
}
if ( !( $response = readPacket( $fd, 2.0 ) ) ) {
print "Failed to read response.\n";
exit 1;
}
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 1 || $responseBytes[0] != 0x16 ) {
print "Invalid Response: ", serialize($response), "\n";
exit 1;
}
}
sub doSecureMode {
my $fd = shift;
my $response;
print "Sending secureMode...\n";
if ( !sendPacket( $fd, deserialize("17 01") ) ) {
print "Failed secureMode\n";
exit 1;
}
if ( !( $response = readPacket( $fd, 2.0 ) ) ) {
print "Failed to read response.\n";
exit 1;
}
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 1 || $responseBytes[0] != 0x18 ) {
print "Invalid Response: ", serialize($response), "\n";
exit 1;
}
}
sub doOpenMulti {
my $fd = shift;
my $response;
print "Sending openMulti ...\n";
if ( !sendPacket( $fd, deserialize("1b 21") ) ) {
print "Failed openMulti\n";
exit 1;
}
my $haveGoodResponse = 0;
my $haveErrorResponse = 0;
my $haveUnknownResponse = 0;
while ( $response = readPacket( $fd, 2 ) ) {
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes == 2
&& $responseBytes[0] == 0x1c
&& $responseBytes[1] == 0 )
{
$haveGoodResponse = 1;
}
elsif ( $responseBytes[0] == 0x0e ) {
# msg
my $msg = pack( 'C*',
map { hex }
split( /\s/, serialize( substr( $response, 1 ) ) ) );
$msg =~ tr/\n/ /;
$msg =~ tr/\r/ /;
print "MSG: ", $msg, "\n";
}
elsif ( $responseBytes[0] == 0x0d ) {
# error
$haveErrorResponse = 1;
my $msg = pack( 'C*',
map { hex }
split( /\s/, serialize( substr( $response, 5 ) ) ) );
$msg =~ tr/\n//d;
$msg =~ tr/\r//d;
print "ERROR: ", $msg, "\n";
}
else {
$haveUnknownResponse = 1;
print "Response: ", serialize($response), "\n";
}
}
if ( $haveGoodResponse != 1
|| $haveErrorResponse == 1
|| $haveUnknownResponse == 1 )
{
print "Invalid openMulti response.\n";
exit 1;
}
}
sub doReset2 {
my $fd = shift;
my $response;
print "Requesting Reset...\n";
if ( !sendPacket( $fd, deserialize("0b") ) ) {
print "Failed doReset\n";
exit 1;
}
if ( !( $response = readPacket( $fd, 2.0 ) ) ) {
print "Failed to read response.\n";
exit 1;
}
my @responseBytes = unpack( 'C*', $response );
if ( scalar @responseBytes != 1 || $responseBytes[0] != 0x0c ) {
print "Invalid Response: ", serialize($response), "\n";
exit 1;
}
}
###
### main stages
###
sub doStage1 {
my $fname = shift;
my $retval;
my $response;
my ( $fd, $tty ) = setupTTY();
if ( !defined $fd ) {
print "Failed to find/open TTY.\n";
exit 1;
}
while ( $response = readPacket( $fd, 0.1 ) ) {
print "Ignoring response: ", serialize($response), "\n";
}
doSoftwareVersion($fd);
doRequestParam($fd);
print "Uploading file '", $fname, "' to QDLOAD...\n";
exit 1 if !defined( uploadFile( $fd, 0x2a000000, $fname ) );
print "Executing file...\n";
execute( $fd, 0x2a000000 );
close($fd);
}
sub doStage2 {
my $laddr = shift;
my $lfname = shift;
my $retval;
my $response;
my ( $fd, $tty ) = setupTTY();
if ( !defined $fd ) {
print "Failed to find/open TTY.\n";
exit 1;
}
doMagic($fd);
#closeFlush($fd);
doSecureMode($fd);
doOpenMulti($fd);
print "Uploading file '", $lfname, "'...\n";
uploadFile2( $fd, $laddr, $lfname );
doCloseFlush($fd);
###doReset2($fd);
close($fd);
}
sub doResetStage {
my $retval;
my $response;
my ( $fd, $tty ) = setupTTY();
if ( !defined $fd ) {
print "Failed to find/open TTY.\n";
exit 1;
}
doReset2($fd);
close($fd);
}
sub doTestCmd {
my $cmd = shift;
my $retval;
my $response;
my ( $fd, $tty ) = setupTTY();
if ( !defined $fd ) {
print "Failed to find/open TTY.\n";
exit 1;
}
doMagic($fd);
print "Sending cmd '", $cmd, "'\n";
if ( !sendPacket( $fd, deserialize($cmd) ) ) {
print "Failed send\n";
exit 1;
}
while ( $response = readPacket( $fd, 2 ) ) {
my @responseBytes = unpack( 'C*', $response );
if ( $responseBytes[0] == 0x0e ) {
# msg
my $msg = pack( 'C*',
map { hex }
split( /\s/, serialize( substr( $response, 1 ) ) ) );
$msg =~ tr/\n/ /;
$msg =~ tr/\r/ /;
print "MSG: ", $msg, "\n";
}
elsif ( $responseBytes[0] == 0x0d ) {
# error
my $msg = pack( 'C*',
map { hex }
split( /\s/, serialize( substr( $response, 5 ) ) ) );
$msg =~ tr/\n//d;
$msg =~ tr/\r//d;
print "ERROR: ", $msg, "\n";
}
else {
print "Response: ", serialize($response), "\n";
}
}
close($fd);
}
sub doUsage {
print "Usage: qdload --pfile <stage1_bin>\n";
print " | --lfile <stage2_file>\n";
print " | --lfile <stage2_file> --laddr <stage2_load_addr>\n";
print " | --lreset\n";
}
###
### main
###
my $opts_result;
my $opts_pfile;
my $opts_lfile;
my $opts_laddr;
my $opts_lreset;
my $opts_testcmd;
$opts_result = GetOptions(
"pfile=s" => \$opts_pfile,
"lfile=s" => \$opts_lfile,
"laddr=o" => \$opts_laddr,
"testcmd=s" => \$opts_testcmd,
"lreset" => \$opts_lreset
);
my $num_remaining_args = $#ARGV + 1;
if ( $num_remaining_args > 0 ) {
doUsage();
exit(1);
}
if ( !defined($opts_pfile)
&& !defined($opts_lfile)
&& !defined($opts_lreset)
&& !defined($opts_testcmd) )
{
doUsage();
exit(1);
}
if ( defined($opts_testcmd) ) {
doTestCmd($opts_testcmd);
exit(0);
}
if ( defined($opts_pfile) ) {
doStage1($opts_pfile);
sleep(2);
}
if ( defined($opts_lfile) ) {
my $addr = 0;
if ( defined($opts_laddr) ) {
$addr = $opts_laddr;
}
doStage2( $addr, $opts_lfile );
}
if ( defined($opts_lreset) ) {
doResetStage();
}
exit 0;

Bump. I really need some dev help with this :C

Bump again. I've found that whilst sitting idle, but undoubtedly "powered on" as far as I can tell the processor actually does get some warmth to it. Just a note since I had the back off.

Nobody, :/

Related

Strace for Android

Everybody loves strace !
So am I, thats why I compiled a static one you can use on any Android or even.. any ARM Linux system
It's unmodified, compiled with buildroot.
Download it here:
http://project-voodoo.org/downloads/dev-tools/debug/strace.tar.gz
Sample output:
Code:
$ strace ls
execve("/system/bin/ls", ["ls"], [/* 13 vars */]) = 0
set_tls(0xb00182ec, 0, 0xbedd3d14, 0xc, 0xb000c448) = 0
getpid() = 6712
sigaction(SIGILL, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0xb000c448) = 0
sigaction(SIGABRT, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0) = 0
sigaction(SIGBUS, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0) = 0
sigaction(SIGFPE, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0) = 0
sigaction(SIGSEGV, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0) = 0
sigaction(SIGSTKFLT, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0) = 0
sigaction(SIGPIPE, {0xb0003441, [], SA_RESTART}, {SIG_DFL, , 0) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
stat64("/system/lib/liblog.so", {st_mode=S_IFREG|0644, st_size=13524, ...}) = 0
open("/system/lib/liblog.so", O_RDONLY|O_LARGEFILE) = 3
lseek(3, 10, SEEK_SET) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\[email protected]\17\0\0004\0\0\0$"..., 4096) = 4096
lseek(3, 10, SEEK_END) = 13516
read(3, "\0\0\240\257PRE "..., 8) = 8
mmap2(0xafa00000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xafa00000
mmap2(0xafa00000, 10716, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xafa00000
mprotect(0xafa00000, 12288, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mmap2(0xafa03000, 372, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x3) = 0xafa03000
close(3) = 0
stat64("/system/lib/libc.so", {st_mode=S_IFREG|0644, st_size=278276, ...}) = 0
open("/system/lib/libc.so", O_RDONLY|O_LARGEFILE) = 3
lseek(3, 10, SEEK_SET) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0p\266\0\0004\0\0\0<"..., 4096) = 4096
lseek(3, 10, SEEK_END) = 278268
read(3, "\0\0\320\257PRE "..., 8) = 8
mmap2(0xafd00000, 323584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xafd00000
mmap2(0xafd00000, 265380, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xafd00000
mprotect(0xafd00000, 266240, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mmap2(0xafd41000, 10028, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x41) = 0xafd41000
mmap2(0xafd44000, 43648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xafd44000
close(3) = 0
mprotect(0xafd00000, 266240, PROT_READ|PROT_EXEC) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
gettid() = 6712
set_tls(0xafd4a86c, 0xafd4a830, 0, 0x40, 0xafd42328) = 0
mmap2(NULL, 32768, PROT_READ, MAP_SHARED, 9, 0) = 0x40000000
open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 3
read(3, "\301%\364\320"..., 4) = 4
close(3) = 0
stat64("/system/lib/libstdc++.so", {st_mode=S_IFREG|0644, st_size=5272, ...}) = 0
open("/system/lib/libstdc++.so", O_RDONLY|O_LARGEFILE) = 3
lseek(3, 10, SEEK_SET) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0X\10\0\0004\0\0\0\350"..., 4096) = 4096
lseek(3, 10, SEEK_END) = 5264
read(3, "\0\0\300\257PRE "..., 8) = 8
mmap2(0xafc00000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xafc00000
mmap2(0xafc00000, 2864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xafc00000
mprotect(0xafc00000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mmap2(0xafc01000, 232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1) = 0xafc01000
close(3) = 0
mprotect(0xafc00000, 4096, PROT_READ|PROT_EXEC) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
stat64("/system/lib/libm.so", {st_mode=S_IFREG|0644, st_size=91088, ...}) = 0
open("/system/lib/libm.so", O_RDONLY|O_LARGEFILE) = 3
lseek(3, 10, SEEK_SET) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250\34\0\0004\0\0\0p"..., 4096) = 4096
lseek(3, 10, SEEK_END) = 91080
read(3, "\0\0\260\257PRE "..., 8) = 8
mmap2(0xafb00000, 94208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xafb00000
mmap2(0xafb00000, 87548, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xafb00000
mprotect(0xafb00000, 90112, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mmap2(0xafb16000, 208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x16) = 0xafb16000
close(3) = 0
mprotect(0xafb00000, 90112, PROT_READ|PROT_EXEC) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
mprotect(0xafa00000, 12288, PROT_READ|PROT_EXEC) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
stat64("/system/lib/libcutils.so", {st_mode=S_IFREG|0644, st_size=59364, ...}) = 0
open("/system/lib/libcutils.so", O_RDONLY|O_LARGEFILE) = 3
lseek(3, 10, SEEK_SET) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0d1\0\0004\0\0\0\f"..., 4096) = 4096
lseek(3, 10, SEEK_END) = 59356
read(3, "\0\0\220\257PRE "..., 8) = 8
mmap2(0xaf900000, 122880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xaf900000
mmap2(0xaf900000, 55296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xaf900000
mprotect(0xaf900000, 57344, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mmap2(0xaf90e000, 1100, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe) = 0xaf90e000
mmap2(0xaf90f000, 57764, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xaf90f000
close(3) = 0
mprotect(0xaf900000, 57344, PROT_READ|PROT_EXEC) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
mprotect(0x8000, 77824, PROT_READ|PROT_EXEC) = 0
getuid32() = 0
geteuid32() = 0
getgid32() = 2000
getegid32() = 2000
lstat64(".", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
brk(0) = 0x20000
brk(0x20000) = 0x20000
brk(0x22000) = 0x22000
open(".", O_RDONLY|O_LARGEFILE|O_DIRECTORY) = 3
getdents64(3, /* d_reclen == 0, problem here *//* 1 entries */, 4200) = 904
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40008000
mprotect(0x40008000, 4096, PROT_READ) = 0
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0
mprotect(0x40008000, 4096, PROT_READ|PROT_WRITE) = 0
mprotect(0x40008000, 4096, PROT_READ) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
write(1, "config\n"..., 7config
) = 7
write(1, "efs\n"..., 4efs
) = 4
write(1, "sdcard\n"..., 7sdcard
) = 7
write(1, "acct\n"..., 5acct
) = 5
write(1, "mnt\n"..., 4mnt
) = 4
write(1, "d\n"..., 2d
) = 2
write(1, "etc\n"..., 4etc
) = 4
write(1, "default.prop\n"..., 13default.prop
) = 13
write(1, "dbdata\n"..., 7dbdata
) = 7
write(1, "cache\n"..., 6cache
) = 6
write(1, "init.smdkc110.rc\n"..., 17init.smdkc110.rc
) = 17
write(1, "lib\n"..., 4lib
) = 4
write(1, "usr\n"..., 4usr
) = 4
write(1, "data\n"..., 5data
) = 5
write(1, "res\n"..., 4res
) = 4
write(1, "modules\n"..., 8modules
) = 8
write(1, "sbin\n"..., 5sbin
) = 5
write(1, "bin\n"..., 4bin
) = 4
write(1, "init.goldfish.rc\n"..., 17init.goldfish.rc
) = 17
write(1, "sys\n"..., 4sys
) = 4
write(1, "init\n"..., 5init
) = 5
write(1, "init_samsung\n"..., 13init_samsung
) = 13
write(1, "recovery.rc\n"..., 12recovery.rc
) = 12
write(1, "dev\n"..., 4dev
) = 4
write(1, "init.rc\n"..., 8init.rc
) = 8
write(1, "voodoo\n"..., 7voodoo
) = 7
write(1, "fota.rc\n"..., 8fota.rc
) = 8
write(1, "lpm.rc\n"..., 7lpm.rc
) = 7
write(1, "proc\n"..., 5proc
) = 5
write(1, "system\n"..., 7system
) = 7
getdents64(3, 0x20018, 4200out of memory
) = 0
close(3) = 0
mprotect(0x40008000, 4096, PROT_READ|PROT_WRITE) = 0
mprotect(0x40008000, 4096, PROT_READ) = 0
munmap(0x40008000, 4096) = 0
exit_group(0) = ?
PS: Sorry if this was done before, i didn't found one easily.
Thanks! strace is a usefull debug tool!
bwt, i compiled strace (4.6) too
lovetide said:
Thanks! strace is a usefull debug tool!
bwt, i compiled strace (4.6) too
Click to expand...
Click to collapse
Hello, the link is now dead, do you recent version 4.6 or 4.7 statically linked?

[MOD]AROMA Installer Polish language

Hello, guys! As I can see there a lot of Polish people (like me) I decided to make Polish language for your favourite AROMA Installer.
DOWNLOAD HERE!
Instructions:
Download file from the link above
Don't change its name
Paste it into META-INF/com/google/android/aroma/langs
Open aroma-config file in text editor (Notepad++ recommended)
Find language selection section
Copy the last position and edit it, so it will look like that (REMOVE COMA IN NEW ONE, ADD IN PREVIOUS! CHANGE NUMBERS!):
Code:
"German", "Willkommen bei Installer", 0, #-- selected.0 = 10
"Polish", "Witamy w instalatorze!", 0 #-- selected.0 = 11
Now find last if prop:
Code:
if prop("lang.prop","selected.0")=="xyz" then
loadlang("langs/xyz.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
...copy it, and mod it so it will look like that:
Code:
if prop("lang.prop","selected.0")=="10" then
loadlang("langs/de.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
Code:
if prop("lang.prop","selected.0")=="11" then
loadlang("langs/pl.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
Save the aroma-config file.
Finally your aroma-config should look like this (edited language section is shown here):
Code:
#---------------------------------[ Selectbox Without Group ]----------------------------------#
# TITLE | SUBTITLE | Initial Value #
#------------------+-----------------------------------------------------------+---------------#
"English", "Welcome to installer", 1, #-- selected.0 = 1
"Indonesian", "Selamat datang di installer", 0, #-- selected.0 = 2
"Espanol", "Bienvenido al instalador", 0, #-- selected.0 = 3
"Simplified Chinese","?????????", 0, #-- selected.0 = 4
"Arabic", "?????????", 0, #-- selected.0 = 5
"French", "Bienvenue dans l'installateur", 0, #-- selected.0 = 6
"Russian", "?????????", 0, #-- selected.0 = 7
"Italian", "Benvenuti installer", 0, #-- selected.0 = 8
"Hebrew", "?????????", 0, #-- selected.0 = 9
"German", "Willkommen bei Installer", 0, #-- selected.0 = 10
"Polish", "Witamy w instalatorze!", 0 #-- selected.0 = 11
#--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
);
##
# SET LANGUAGE & FONT FAMILY
#
if prop("lang.prop","selected.0")=="1" then
loadlang("langs/en.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" ); #-- "0" = Small Font ( Look at Fonts & UNICODE Demo Below )
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" ); #-- "1" = Big Font
endif;
if prop("lang.prop","selected.0")=="2" then
loadlang("langs/id.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="3" then
loadlang("langs/es.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="4" then
loadlang("langs/cn.lang");
fontresload( "0", "ttf/DroidSansFallback.ttf;ttf/Roboto-Regular.ttf", "12" ); #-- Use sets of font (Font Family)
fontresload( "1", "ttf/DroidSansFallback.ttf;ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="5" then
loadlang("langs/ar.lang");
fontresload( "0", "ttf/DroidSansArabic.ttf;ttf/Roboto-Regular.ttf", "12" ); #-- Use sets of font (Font Family)
fontresload( "1", "ttf/DroidSansArabic.ttf;ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="6" then
loadlang("langs/fr.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="7" then
loadlang("langs/ru.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="8" then
loadlang("langs/it.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="9" then
loadlang("langs/he.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="10" then
loadlang("langs/de.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
if prop("lang.prop","selected.0")=="11" then
loadlang("langs/pl.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "12" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "18" );
endif;
Done. Now you can enjoy Polish language in your AROMA Installer.
AROMA Installer Original Thread HERE
Big thanks to amarullz! His awesome AROMA is one of the most amazing miracles in Android world!

[Q] Compiling CM 12.1 Error

Hi,
I tried to build my own rom with the tutorial for the 1+1 of cynogenmod.
The first built was fine, so I wanted to change the toolchain for compiling the new built with SABERMOD.
This is what I done so far :
- git clone -b master https://github.com/SaberMod/android_prebuilts_gcc_linux-x86_arm_sabermod-arm-linux-androideabi-4.9 prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-SM-4.9
- built/envsetup.sh =
Code:
export ANDROID_TOOLCHAIN_2ND_ARCH=
local ARCH=$(get_build_var TARGET_ARCH)
case $ARCH in
x86) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin
;;
x86_64) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin
;;
arm) toolchaindir=arm/arm-linux-androideabi-SM-4.9/bin
;;
arm64) toolchaindir=aarch64/aarch64-linux-android-$targetgccversion/bin;
toolchaindir2=arm/arm-linux-androideabi-$targetgccversion2/bin
;;
mips|mips64) toolchaindir=mips/mips64el-linux-android-$targetgccversion/bin
;;
*)
echo "Can't find toolchain for unknown architecture: $ARCH"
toolchaindir=xxxxxxxxx
;;
Code:
unset ANDROID_KERNEL_TOOLCHAIN_PATH
case $ARCH in
arm)
# Legacy toolchain configuration used for ARM kernel compilation
toolchaindir=arm/arm-eabi-SM-4.9/bin
if [ -d "$gccprebuiltdir/$toolchaindir" ]; then
export ARM_EABI_TOOLCHAIN="$gccprebuiltdir/$toolchaindir"
ANDROID_KERNEL_TOOLCHAIN_PATH="$ARM_EABI_TOOLCHAIN":
fi
;;
- repo sync and other "pre-steps"
-brunch bacon
After 45 minutes I was getting this error:
Code:
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/root/android/system/kernel/oneplus/msm8974'
make: *** [TARGET_KERNEL_BINARIES] Error 2
make: *** Waiting for unfinished jobs....
warning: unknown warning option '-Wno-unused-local-typedef' [-Wunknown-warning-option]
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:166:21: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
for (int i = 0; i < parts.size() - 1; i++) {
~ ^ ~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:533:25: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < data_.size(); i++) {
~ ^ ~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:615:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < proto_path_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:633:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < input_files_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:655:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < output_directives_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:745:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < input_files_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:925:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parts.size(); i++) {
~ ^ ~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1209:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1238:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1371:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1377:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
12 warnings generated.
warning: unknown warning option '-Wno-unused-local-typedef' [-Wunknown-warning-option]
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/plugin.cc:136:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
2 warnings generated.
#### make failed to build some targets (45:19 (mm:ss)) ####
Looks like an kernel compiling error, but I dont know how to fix it .
Maybe someone can help me out of this.
n00del said:
Hi,
I tried to build my own rom with the tutorial for the 1+1 of cynogenmod.
The first built was fine, so I wanted to change the toolchain for compiling the new built with SABERMOD.
This is what I done so far :
- git clone -b master https://github.com/SaberMod/android_prebuilts_gcc_linux-x86_arm_sabermod-arm-linux-androideabi-4.9 prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-SM-4.9
- built/envsetup.sh =
Code:
export ANDROID_TOOLCHAIN_2ND_ARCH=
local ARCH=$(get_build_var TARGET_ARCH)
case $ARCH in
x86) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin
;;
x86_64) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin
;;
arm) toolchaindir=arm/arm-linux-androideabi-SM-4.9/bin
;;
arm64) toolchaindir=aarch64/aarch64-linux-android-$targetgccversion/bin;
toolchaindir2=arm/arm-linux-androideabi-$targetgccversion2/bin
;;
mips|mips64) toolchaindir=mips/mips64el-linux-android-$targetgccversion/bin
;;
*)
echo "Can't find toolchain for unknown architecture: $ARCH"
toolchaindir=xxxxxxxxx
;;
Code:
unset ANDROID_KERNEL_TOOLCHAIN_PATH
case $ARCH in
arm)
# Legacy toolchain configuration used for ARM kernel compilation
toolchaindir=arm/arm-eabi-SM-4.9/bin
if [ -d "$gccprebuiltdir/$toolchaindir" ]; then
export ARM_EABI_TOOLCHAIN="$gccprebuiltdir/$toolchaindir"
ANDROID_KERNEL_TOOLCHAIN_PATH="$ARM_EABI_TOOLCHAIN":
fi
;;
- repo sync and other "pre-steps"
-brunch bacon
After 45 minutes I was getting this error:
Code:
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/root/android/system/kernel/oneplus/msm8974'
make: *** [TARGET_KERNEL_BINARIES] Error 2
make: *** Waiting for unfinished jobs....
warning: unknown warning option '-Wno-unused-local-typedef' [-Wunknown-warning-option]
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:166:21: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
for (int i = 0; i < parts.size() - 1; i++) {
~ ^ ~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:533:25: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < data_.size(); i++) {
~ ^ ~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:615:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < proto_path_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:633:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < input_files_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:655:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < output_directives_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:745:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < input_files_.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:925:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parts.size(); i++) {
~ ^ ~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1209:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1238:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1371:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc:1377:23: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
12 warnings generated.
warning: unknown warning option '-Wno-unused-local-typedef' [-Wunknown-warning-option]
external/chromium_org/third_party/protobuf/src/google/protobuf/compiler/plugin.cc:136:21: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned int') [-Wsign-compare]
for (int i = 0; i < parsed_files.size(); i++) {
~ ^ ~~~~~~~~~~~~~~~~~~~
2 warnings generated.
#### make failed to build some targets (45:19 (mm:ss)) ####
Looks like an kernel compiling error, but I dont know how to fix it .
Maybe someone can help me out of this.
Click to expand...
Click to collapse
Try another toolchain for the right CPU for you ..its solved your Problem ?
Have you setup the toolchain for the kernel correctly before you Start the compile?

Possible Samsung Unlock method through RIL_OEM_HOOK_RAW?

Hello,
I was looking into CSC.apk today when this caught my eye
CscModemSettingService.java
Notice updateLockInfo and addLockInfo
Code:
/*
* Decompiled with CFR 0_110.
*
* Could not load the following classes:
* android.app.Service
* android.content.Context
* android.content.Intent
* android.content.SharedPreferences
* android.content.SharedPreferences$Editor
* android.os.Bundle
* android.os.Handler
* android.os.IBinder
* android.os.Message
* android.os.SystemProperties
* android.util.Log
* com.samsung.android.sec_platform_library.FactoryPhone
* com.samsung.android.sec_platform_library.PacketBuilder
* java.io.File
* java.lang.Byte
* java.lang.Integer
* java.lang.Object
* java.lang.Runnable
* java.lang.String
* java.lang.StringBuffer
* java.lang.Thread
* java.util.ArrayList
* org.w3c.dom.Node
* org.w3c.dom.NodeList
*/
package com.samsung.sec.android.application.csc;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.SystemProperties;
import android.util.Log;
import com.samsung.android.sec_platform_library.FactoryPhone;
import com.samsung.android.sec_platform_library.PacketBuilder;
import com.samsung.sec.android.application.csc.CscParser;
import java.io.File;
import java.util.ArrayList;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class CscModemSettingService
extends Service {
private static final boolean isMarvell = "mrvl".equalsIgnoreCase(SystemProperties.get((String)"ro.board.platform", (String)"Unknown").trim());
private String CPLockCode = "";
private String DEFAULT_CSC_FILE = CscParser.getCustomerPath();
private String NSPLockCode = "";
private String NetLockCode = "";
private String OTHERS_CSC_FILE = CscParser.getOthersPath();
private String SPLockCode = "";
private int amrVoiceCodec = -1;
private int generalLockInfo = 0;
private int gprsAttachMode = 1;
ArrayList<Byte> mByteArray = new ArrayList();
private Handler mHandler;
private Intent mIntent = null;
private int mItemCount = 0;
private FactoryPhone mPhone = null;
private int networkMode = 0;
private int ssms = -1;
private String strNetworkMode = "auto";
private String strSalesCode = "";
private int unlockCnt = 3;
public CscModemSettingService() {
this.mHandler = new Handler(){
/*
* Enabled aggressive block sorting
* Lifted jumps to return sites
*/
public void handleMessage(Message message) {
int n = message.getData().getInt("error");
switch (message.what) {
default: {
return;
}
case 2000: {
Log.i((String)"CscModemSettingService", (String)"SEND_PRECONFIG_DONE response incoming!!");
if (n == 0) return;
Log.i((String)"CscModemSettingService", (String)"AsyncResult Exception Occur!!!");
return;
}
case 2001: {
Log.i((String)"CscModemSettingService", (String)"SEND_MODEM_DONE response incoming!!");
if (n == 0) return;
Log.i((String)"CscModemSettingService", (String)"AsyncResult Exception Occur!!!");
return;
}
case 2002:
}
Log.i((String)"CscModemSettingService", (String)"SEND_RESET_DONE response incoming!!");
if (n != 0 && !isMarvell) {
Log.i((String)"CscModemSettingService", (String)"AsyncResult Exception Occur!!!");
return;
}
SharedPreferences.Editor editor = CscModemSettingService.this.getSharedPreferences("csc.preferences_name", 0).edit();
editor.putBoolean("csc.key.csc_modem_setting_done", true);
editor.commit();
}
};
}
private void compareLockAndModemInfo() {
this.readModemInfo();
this.readLockInfo();
this.mItemCount = 0;
this.mByteArray = new ArrayList();
this.addModemInfoToBuffer();
this.addLockInfoToBuffer();
Log.i((String)"CscModemSettingService", (String)("compareLockAndModemInfo() : mByteArray = " + this.mByteArray.size()));
this.sendByteBuffer(7, 1);
}
/*
* Enabled aggressive block sorting
*/
private void readLockInfo() {
CscParser cscParser = new CscParser(this.DEFAULT_CSC_FILE);
int n = 5;
this.NetLockCode = "";
this.SPLockCode = "";
this.NSPLockCode = "";
this.CPLockCode = "";
String string = cscParser.get("Settings.Main.Security.UnlockCnt");
this.unlockCnt = string == null ? 3 : new Integer(string);
NodeList nodeList = cscParser.searchList(cscParser.search("Settings.Main.Security."), "NetworkLock");
if (nodeList != null && nodeList.getLength() > 0) {
this.generalLockInfo = 1 | this.generalLockInfo;
for (int i = 0; i < nodeList.getLength(); ++i) {
StringBuffer stringBuffer = new StringBuffer(cscParser.getValue(nodeList.item(i)));
if (stringBuffer.toString().length() == 5) {
n = 5;
stringBuffer.append("#");
} else {
n = 6;
}
Log.i((String)"CscModemSettingService", (String)("NetworkLock > code (" + i + ") : " + stringBuffer.toString()));
this.NetLockCode = this.NetLockCode + stringBuffer.toString();
}
}
Log.i((String)"CscModemSettingService", (String)("NetworkLock > all code : " + this.NetLockCode));
NodeList nodeList2 = cscParser.searchList(cscParser.search("Settings.Main.Security."), "SubsetLock");
if (nodeList2 != null && nodeList2.getLength() > 0) {
this.generalLockInfo = 2 | this.generalLockInfo;
for (int i = 0; i < nodeList2.getLength(); ++i) {
StringBuffer stringBuffer = new StringBuffer(cscParser.getValue(nodeList2.item(i)));
if (stringBuffer.toString().length() == 2) {
stringBuffer.append("#");
}
Log.i((String)"CscModemSettingService", (String)("SubsetLock > code (" + i + ") : " + stringBuffer.toString()));
this.NSPLockCode = this.NSPLockCode + Integer.toString((int)n) + stringBuffer.toString();
}
}
Log.i((String)"CscModemSettingService", (String)("SubsetLock > all code : " + this.NSPLockCode));
NodeList nodeList3 = cscParser.searchList(cscParser.search("Settings.Main.Security."), "SPLock");
if (nodeList3 != null && nodeList3.getLength() > 0) {
this.generalLockInfo = 8 | this.generalLockInfo;
for (int i = 0; i < nodeList3.getLength(); ++i) {
String string2 = cscParser.getValue(nodeList3.item(i));
Log.i((String)"CscModemSettingService", (String)("SPLock > code (" + i + ") : " + string2));
this.SPLockCode = this.SPLockCode + string2;
}
}
Log.i((String)"CscModemSettingService", (String)("SPLock > all code : " + this.SPLockCode));
NodeList nodeList4 = cscParser.searchList(cscParser.search("Settings.Main.Security."), "CPLock");
if (nodeList4 != null && nodeList4.getLength() > 0) {
this.generalLockInfo = 16 | this.generalLockInfo;
for (int i = 0; i < nodeList4.getLength(); ++i) {
String string3 = cscParser.getValue(nodeList4.item(i));
Log.i((String)"CscModemSettingService", (String)("CPLock > code (" + i + ") : " + string3));
this.CPLockCode = this.CPLockCode + string3;
}
}
Log.i((String)"CscModemSettingService", (String)("CPLock > all code : " + this.CPLockCode));
}
/*
* Enabled aggressive block sorting
*/
private void readModemInfo() {
CscParser cscParser = new CscParser(this.DEFAULT_CSC_FILE);
this.strNetworkMode = new CscParser(this.OTHERS_CSC_FILE).get("Settings.Main.Network.NetworkMode");
if (this.strNetworkMode == null) {
String string = SystemProperties.get((String)"ro.csc.sales_code");
this.networkMode = "SKT".equals((Object)string) || "KTT".equals((Object)string) || "LGT".equals((Object)string) ? 0 : 1;
} else if (this.strNetworkMode.equalsIgnoreCase("auto")) {
this.networkMode = 1;
} else if (this.strNetworkMode.equalsIgnoreCase("UMTS")) {
this.networkMode = 2;
} else if (this.strNetworkMode.equalsIgnoreCase("GSM")) {
this.networkMode = 3;
} else if (this.strNetworkMode.equalsIgnoreCase("900")) {
this.networkMode = 4;
} else if (this.strNetworkMode.equalsIgnoreCase("1800")) {
this.networkMode = 5;
} else if (this.strNetworkMode.equalsIgnoreCase("1900")) {
this.networkMode = 6;
}
if (cscParser.get("Settings.Main.Network.AutoAttach") == null) {
this.gprsAttachMode = 1;
} else if (cscParser.get("Settings.Main.Network.AutoAttach").equalsIgnoreCase("on")) {
this.gprsAttachMode = 1;
} else if (cscParser.get("Settings.Main.Network.AutoAttach").equalsIgnoreCase("off")) {
this.gprsAttachMode = 0;
}
if (cscParser.get("Settings.Messages.SMS.SSMS") == null) {
this.ssms = 0;
} else if (cscParser.get("Settings.Messages.SMS.SSMS").equalsIgnoreCase("on")) {
this.ssms = 1;
} else if (cscParser.get("Settings.Messages.SMS.SSMS").equalsIgnoreCase("off")) {
this.ssms = 0;
}
if (cscParser.get("Settings.Main.Sound.AMRVoiceCodec") == null) {
this.amrVoiceCodec = -1;
return;
} else {
if (cscParser.get("Settings.Main.Sound.AMRVoiceCodec").equalsIgnoreCase("enable") || cscParser.get("Settings.Main.Sound.AMRVoiceCodec").equalsIgnoreCase("on")) {
this.amrVoiceCodec = 1;
return;
}
if (!cscParser.get("Settings.Main.Sound.AMRVoiceCodec").equalsIgnoreCase("disable") && !cscParser.get("Settings.Main.Sound.AMRVoiceCodec").equalsIgnoreCase("off")) return;
{
this.amrVoiceCodec = 0;
return;
}
}
}
private void readSalesCode() {
this.strSalesCode = new CscParser(this.DEFAULT_CSC_FILE).get("GeneralInfo.SalesCode");
Log.i((String)"CscModemSettingService", (String)("csc modem strSalesCode = " + this.strSalesCode));
}
private void updateLockInfo() {
String string;
String string2 = CscParser.getSalesCode();
if (!string2.equals((Object)"null") && new File(string = "/system/csc/" + string2 + this.DEFAULT_CSC_FILE).exists()) {
this.DEFAULT_CSC_FILE = string;
}
this.readLockInfo();
this.mItemCount = 0;
this.mByteArray = new ArrayList();
this.addLockInfoToBuffer();
Log.i((String)"CscModemSettingService", (String)("updateLockInfo() : mByteArray Size = " + this.mByteArray.size()));
this.sendByteBuffer(8, 0);
}
private void updateModemInfo() {
this.readSalesCode();
this.sendSalesCode();
this.readModemInfo();
this.mItemCount = 0;
this.mByteArray = new ArrayList();
this.addModemInfoToBuffer();
Log.i((String)"CscModemSettingService", (String)("updateModemInfo() : mByteArray Size = " + this.mByteArray.size()));
this.sendByteBuffer(7, 0);
this.sendResetMsg();
}
public void addLockInfoToBuffer() {
Log.i((String)"CscModemSettingService", (String)"add Lock Info");
this.mByteArray.add((Object)new Byte(-127));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(6));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.generalLockInfo)));
this.mItemCount = 1 + this.mItemCount;
if ((1 & this.generalLockInfo) > 0) {
int n = this.NetLockCode.length();
int n2 = n + 15;
this.mByteArray.add((Object)new Byte(-126));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n2 & 255)));
this.mByteArray.add((Object)new Byte((byte)(n2 << 8)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(2));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.unlockCnt)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n & 255)));
this.mByteArray.add((Object)new Byte((byte)(n << 8)));
new byte[this.NetLockCode.length()];
byte[] arrby = this.NetLockCode.getBytes();
for (int i = 0; i < arrby.length; ++i) {
this.mByteArray.add((Object)new Byte(arrby[i]));
}
this.mItemCount = 1 + this.mItemCount;
}
if ((2 & this.generalLockInfo) > 0) {
int n = this.NSPLockCode.length();
int n3 = n + 15;
this.mByteArray.add((Object)new Byte(-125));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n3 & 255)));
this.mByteArray.add((Object)new Byte((byte)(n3 << 8)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(2));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.unlockCnt)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n & 255)));
this.mByteArray.add((Object)new Byte((byte)(n << 8)));
new byte[this.NSPLockCode.length()];
byte[] arrby = this.NSPLockCode.getBytes();
for (int i = 0; i < arrby.length; ++i) {
this.mByteArray.add((Object)new Byte(arrby[i]));
}
this.mItemCount = 1 + this.mItemCount;
}
if ((8 & this.generalLockInfo) > 0) {
int n = this.SPLockCode.length();
int n4 = n + 15;
this.mByteArray.add((Object)new Byte(-124));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n4 & 255)));
this.mByteArray.add((Object)new Byte((byte)(n4 << 8)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(2));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.unlockCnt)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n & 255)));
this.mByteArray.add((Object)new Byte((byte)(n << 8)));
new byte[this.SPLockCode.length()];
byte[] arrby = this.SPLockCode.getBytes();
for (int i = 0; i < arrby.length; ++i) {
this.mByteArray.add((Object)new Byte(arrby[i]));
}
this.mItemCount = 1 + this.mItemCount;
}
if ((16 & this.generalLockInfo) > 0) {
int n = this.CPLockCode.length();
int n5 = n + 15;
this.mByteArray.add((Object)new Byte(-123));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n5 & 255)));
this.mByteArray.add((Object)new Byte((byte)(n5 << 8)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(2));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.unlockCnt)));
this.mByteArray.add((Object)new Byte(3));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(n & 255)));
this.mByteArray.add((Object)new Byte((byte)(n << 8)));
new byte[this.CPLockCode.length()];
byte[] arrby = this.CPLockCode.getBytes();
for (int i = 0; i < arrby.length; ++i) {
this.mByteArray.add((Object)new Byte(arrby[i]));
}
this.mItemCount = 1 + this.mItemCount;
}
}
public void addModemInfoToBuffer() {
Log.i((String)"CscModemSettingService", (String)"add Modem Info");
if (this.networkMode > 0) {
this.mByteArray.add((Object)new Byte(-121));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.networkMode)));
this.mItemCount = 1 + this.mItemCount;
}
this.mByteArray.add((Object)new Byte(-119));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.gprsAttachMode)));
this.mItemCount = 1 + this.mItemCount;
if (this.amrVoiceCodec >= 0) {
this.mByteArray.add((Object)new Byte(-117));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.amrVoiceCodec)));
this.mItemCount = 1 + this.mItemCount;
}
this.mByteArray.add((Object)new Byte(-115));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(11));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(2));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte((byte)(255 & this.ssms)));
this.mByteArray.add((Object)new Byte(2));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(1));
this.mByteArray.add((Object)new Byte(0));
this.mByteArray.add((Object)new Byte(0));
this.mItemCount = 1 + this.mItemCount;
}
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
this.mPhone = new FactoryPhone((Context)this);
}
public void onDestroy() {
super.onDestroy();
this.mPhone.disconnectFromRilService();
}
public void onStart(Intent intent, int n) {
Log.i((String)"CscModemSettingService", (String)"onStart");
this.mIntent = intent;
Thread thread = new Thread(new Runnable(){
public void run() {
if (CscModemSettingService.this.mIntent != null && CscModemSettingService.this.mIntent.hasExtra("MODE")) {
String string = CscModemSettingService.this.mIntent.getStringExtra("MODE");
if ("SET_LOCK_INFO".equals((Object)string)) {
Log.i((String)"CscModemSettingService", (String)"SET_LOCK_INFO for modem values. (PHASE 1 writing)");
CscModemSettingService.this.updateLockInfo();
}
if ("SET_MODEM_INFO".equals((Object)string)) {
Log.i((String)"CscModemSettingService", (String)"SET_MODEM_INFO for modem values. (PHASE 2 writing)");
CscModemSettingService.this.updateModemInfo();
}
if ("COMPARE_VERIFY_MODEM".equals((Object)string)) {
Log.i((String)"CscModemSettingService", (String)"COMPARE_VERIFY for modem values. ");
CscModemSettingService.this.compareLockAndModemInfo();
}
return;
}
Log.i((String)"CscModemSettingService", (String)"NO EXTRA");
}
});
thread.setPriority(10);
thread.start();
}
public void sendByteBuffer(int n, int n2) {
int n3 = this.mByteArray.size();
byte[] arrby = new byte[n3];
for (int i = 0; i < n3; ++i) {
arrby[i] = ((Byte)this.mByteArray.get(i)).byteValue();
}
Log.i((String)"CscModemSettingService", (String)"sendByteBuffer");
PacketBuilder packetBuilder = new PacketBuilder(6, (byte)n);
if (n == 7) {
packetBuilder.addData((byte)n2);
}
packetBuilder.addData((byte)this.mItemCount);
packetBuilder.addData(arrby, 0, n3);
this.mPhone.invokeOemRilRequestRaw(packetBuilder.getPacket(), this.mHandler.obtainMessage(2001));
}
public void sendResetMsg() {
Log.i((String)"CscModemSettingService", (String)"sendResetMsg");
PacketBuilder packetBuilder = new PacketBuilder(6, 5);
packetBuilder.addData(1);
if (this.mPhone != null) {
this.mPhone.invokeOemRilRequestRaw(packetBuilder.getPacket(), this.mHandler.obtainMessage(2002));
return;
}
Log.e((String)"CscModemSettingService", (String)"sendResetMsg fail");
}
public void sendSalesCode() {
Log.i((String)"CscModemSettingService", (String)"sendSalesCode");
if (this.strSalesCode == null) {
return;
}
PacketBuilder packetBuilder = new PacketBuilder(6, 1);
packetBuilder.addData(0);
packetBuilder.addData(0);
packetBuilder.addData(this.strSalesCode.getBytes(), 0, this.strSalesCode.getBytes().length);
this.mPhone.invokeOemRilRequestRaw(packetBuilder.getPacket(), this.mHandler.obtainMessage(2000));
}
}
It appears to read the lock codes from the /system/CSC and then update them in the modem through RIL function invokeOemRilRequestRaw (this is also the same api that samsung servicemode app uses). This is on an sgh m919.
Perhaps this could be copied, but we could instead send 00000000 as the new NetLock code?
Obviously this would require root and require the app to be running as a system app since we are calling a protected RIL function (unless we use the Samsung @multiclient api, that requires no privileges and is implemented in stock). But it would be simple to make such an app if this method works. I also discovered that unlockCnt is the number of tries you get for the network unlock code before it is locked out, not that it matters if we can just change the code to whatever we want.
Edit: looks like it is not setting the network lock key as I originally thought, but instead setting a list of allowed MCCMNC that are read from the CSC.
So if the phone was locked to MCCMNCs (making these up)
310020
48262
137373
Payload would be
31002048262#137373
I think these are being written to NVRAM through the raw ril requests
There might be another value that controls whether the region/network lock is on at all. Maybe if we just set it to an empty string, it will turn off?
I know that the app RegionLockAway works somewhat like this. It makes changes to the CSC file and then invokes CSC.apk to send the changes to the modem.

MaviCin MultiTools QTR V2 ( Quandrostr )

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== MaviCin MultiTools QTR V1.9 (Developer = Quandrostr) === Turkish === English ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== Türkçe Tanım ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Bu kelimeler artık sizin için anlam bulacak hadi daha fazla düşünme proğramı indir ve hemen dene sende Android dünyasının içine dal Birşeyler yapmak hiç bukadar kolay ve sorunsuz olmamıştı hadi başlayalım
Apk , Rom , De O Dex , Odex , Deodex , Bat , Batch , Dex
Arsc , Raw , MultiTools , MaviCin , QTR , Classes , Resources
Smali , Baksmali , Signapk , Singin , zipalign , Jar , Adb , Root
Unroot , oat2dex , Log , Android , Apktool , Smali
App , Framework , Priv-app
DİLLER
Arabia
Belarusian
Chinese
English
French
German
Russian
Spanish
Turkish
Ukrainian
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== English Description ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
These words are now thinking more programs let you download and immediately try to find means to make you dive into the Android world, something did not always come easy and has never been smooth start
Apk, Rum, said He Dexin, Odex, Deodex, Bat, Batch, Dex
ARSC, Raw, Multitools, MaviCin, QT, Classes, Resources
S should, Look up, Signapur, Sing, zipalign, Jr., Adb, Root
Unroot, oat2dex, Logan, Android, Apktool must S
App Framework Prive in-app
LANGUAGES
Arabia
Belarusian
Chinese
English
French
German
Russian
Spanish
Turkish
Ukrainian
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== Not ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
NOT 1 : Olurda IniFile hatası alırsanız bu sizin 32 bit değil 64 bit bir sistem kullandığınızdan dolayıdır ve aşağıdaki adreslerden
IniFile nin adresine bakıp oradan 64 bit olan dosyayı indirip "bininifile.exe" dizinindeki dosyayı silip onu kopyalamanız sorunu çözecektir
NOT 2 : Lütfen açıklamaları dikkatlice okuyunuz ve karşılaştığınız sıkıntılar için mail atmaya çekinmeyiniz.Program "MaviCinMultiToolsV13Ultimate-Update6"
Programının üzerinden gidilerek az ve öz olması daha fazla insana hitap etmesi amacı güdülerek yazılmıştır "[email protected]" adresinden
yada internet sitelerinden "Quandrostr" adından bana ulaşabilirsiniz.
NOT 3 : Programı kullanabilmek için temiz bir Windows ve Java yazılımlarına ihtiyacınız vardır yava yazılımlarını
"http://www.java.com/tr/download/manual.jsp#win"
"http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
"https://jdk9.java.net/download/"
Adreslerinden indirebilirsiniz unutmayınki Javanın "JRE ve JDK" yazılımlarının ikisinide kurmak sizin menfaatiniz içindir.
NOT 4 : Unutmayınki "MaviCin MultiTools QTR (Quandrostr)" yazılımı bir kople pakettir ve her fırsattada güncellenecektir. Güncellemelerin
Çıkıp çıkmadığını takip ederek en son "MaviCin MultiTools QTR (Quandrostr)" yazılımını kullanınız mutlaka
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== Note ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
NOTE 1: It's a mistake if you get Inifile this is not because you are using a system of 32-bit and 64-bit your address below
Ini look to the address to download the file from there with 64-bit "bin inifile.ex to" delete the files in the directory to copy it will solve the problem
NOTE 2: Please read the descriptions carefully and çekinmeyiniz.progra to take mail to the difficulties you encounter "mavicinmultitoolsv13ultimat to-Update6"
and be less self-propelled purpose by going through the program was written to appeal to more people, "[email protected] is" from
or from the website "Quandrost is" the name you can contact me.
NOTE 3: To use the program, you need to clean the slower Windows and Java software
"Http://www.java.com/tr/download/manual.jsp#w's"
"Http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
"Https://jdk9.java.net/download/"
Note that it can download from the address of Java "JRE and JDK" software install them both is for your benefit.
NOTE 4: Note that "MaviCin Multitools QT (the Quandrost)" software is a combi pack and will be updated every fırsatta. updates
Following out whether the latest "MaviCin Multitools QT (Quandrost is)" You must use the software
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== MaviCin MultiTools QTR V1.9 (Developer = Quandrostr) === Turkish === English ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
MaviCin MultiTools QTR V2
- Ufak düzenlemeler yapıldı.
MaviCin MultiTools QTR V2
- Small adjustments were made.
--------------------------------------------------------------------------------------------------------
=== Türkçe Tanım
MaviCin MultiTools QTR V1.9
- "MaviCinMultiToolsV13Ultimate-Update6" İçerisinden çok kullanılan özellikler "MaviCin MultiTools QTR V1.9" da toplandı
- Program ilk olarak "V1.9" versiyonu ile yayınlandı
- Programda kullanılan tüm yazılımlar son sürümleri ile güncellendi
- Arabia , Belarusian , Chinese , English , French , German , Russian , Spanish , Turkish , Ukrainian dilleri eklendi
- Uyğulama logosu eklendi
- Gereksiz görülen menüler çıkarılıp stabilizasyon yapıldı
- Pek çok hata düzeltmesi yapıldı
- Veritabanı eklenip seçmeli apktool , smali ve diger ayarlar eklendi
- Hakkında bölümü programa uyğun bir şekilde yeniden güncellendi
- Bug sıkıntıları giderildi
- Windows 10 desteği ilerletildi
- Tüm ayıklama modları birleştirildi
-|||- -|||- -|||- -|||- -|||-
=== English Description
MaviCin MultiTools QTR v1.9
- "MaviCinMultiToolsV13Ultimate-Update6" Within commonly used features "MaviCin MultiTools QTR v1.9" gathered
- The Program first "v1.9" version was released with the latest versions of all software used in the program-updated with
- Arabia , Belarusian, Chinese, English, French, German, Russian, Spanish, Turkish, Ukrainian languages added
- Added logo Overprints
- Unnecessary was whether stabilization menus seen
- Lots of error correction is made
- Added Database should I choose apktool, smali and sets the added
- Section has been updated again to the program
- Fixed Bug problems
- Support for Windows 10 escalated
- Merged All extraction modes
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== English (All of my application) - Turkish (Bütün Uygulamalarım) ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
=== Turkish (İndirin-WinRAR 5.xx Kullanın) === English Download-(Use WinRAR 5.xx) ===
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Mod edit: links removed.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
This tool is kanged from another tool.
Thread closed.

Categories

Resources