[Atrix 4G General] ScorpionXII:
Hello XDA-Developers... that's my first post by the way but I think that we can do something very important to the ATRIX users.

I'm from Cuba, I got an Atrix about 2 weeks (I have a Samsung Focus too) but I decided take that Android phone thinking in the Atrix-Lapdock combination. Here I have the really bad issue of wifi problems with my country code operator, I tryed every fix out there in the internet and here like

[Solved] Fix for nonworking WiFi on Simunlocked ATT Atrix 4G http://xdaforums.com/showthread.php?t=1058260

[FIX] Final fix for nonworking WIFI on unlocked ATT Atrix in some countries http://xdaforums.com/showthread.php?t=1077329

but I did'nt have a success :(

Reading about that issue I think that the problem is just inside the code of ATRIX wifi drivers and I made my own decision of search in the source looking for country codes segment, do a modification and re-compile the drivers.

After a week digging in every files of wifi drivers source code I think that I finally found a solution but I need help. I'm a noob in Adroid world but I think that mybe with help of some developers from XDA we can do that job that we will appreciated for many users around the world.

Well, now the important thing. I donwloaded a atrix-wifi-module from Atrix Dev Team on github, after a few days looking the source I found that in \open-src\src\dhd\sys\dhd_custom_gpio.c file...

"dhd_custom_gpio.c" that C file can be our solution

and here a piece of code, the function with the list of countries

/* Customized Locale table : OPTIONAL feature */
const struct cntry_locales_custom translate_custom_table[] = {
/* Table should be filled out based on custom platform regulatory requirement */
#ifdef COUNTRY_REGIONS
{"", "XY", 4}, /* universal if Counry code is unknow or empty */
{"US", "US", 69}, /* input ISO "US" to : US regrev 69 */
{"CA", "US", 69}, /* input ISO "CA" to : US regrev 69 */
{"EU", "EU", 5}, /* European union countries */
{"AT", "EU", 5},
{"BE", "EU", 5},
{"BG", "EU", 5},
{"CY", "EU", 5},
{"CZ", "EU", 5},
{"DK", "EU", 5},
{"EE", "EU", 5},
{"FI", "EU", 5},
{"FR", "EU", 5},
{"DE", "EU", 5},
{"GR", "EU", 5},
{"HU", "EU", 5},
{"IE", "EU", 5},
{"IT", "EU", 5},
{"LV", "EU", 5},
{"LI", "EU", 5},
{"LT", "EU", 5},
{"LU", "EU", 5},
{"MT", "EU", 5},
{"NL", "EU", 5},
{"PL", "EU", 5},
{"PT", "EU", 5},
{"RO", "EU", 5},
{"SK", "EU", 5},
{"SI", "EU", 5},
{"ES", "EU", 5},
{"SE", "EU", 5},
{"GB", "EU", 5}, /* input ISO "GB" to : EU regrev 05 */
{"KR", "XY", 3},
{"AU", "XY", 3},
{"CN", "XY", 3}, /* input ISO "CN" to : XY regrev 03 */
{"TW", "XY", 3},
{"AR", "XY", 3},
{"MX", "XY", 3}
#endif /* COUNTRY_REGIONS */
};

At the end of the file are another important function

/* Customized Locale convertor
* input : ISO 3166-1 country abbreviation
* output: customized cspec
*/
void get_customized_country_code(char *country_iso_code, wl_country_t *cspec)
{
int size, i;

size = ARRAYSIZE(translate_custom_table);

if (cspec == 0)
return;

if (size == 0)
return;

for (i = 0; i < size; i++) {
if (strcmp(country_iso_code, translate_custom_table[i].iso_abbrev) == 0) {
memcpy(cspec->ccode, translate_custom_table[i].custom_locale, WLC_CNTRY_BUF_SZ);
cspec->rev = translate_custom_table[i].custom_locale_rev;
return;
}
}
#ifdef COUNTRY_REGIONS
/* if no country code matched return first universal code from translate_custom_table */
memcpy(cspec->ccode, translate_custom_table[0].custom_locale, WLC_CNTRY_BUF_SZ);
cspec->rev = translate_custom_table[0].custom_locale_rev;
#endif /* COUNTRY_REGIONS */
return;
}

And finally we can see that comment

/* if no country code matched return first universal code from translate_custom_table */

I hope we can recompile it changing universalcode {"", "XY", 4} and put {"", "US", 69}

then if the country code of our provider is not in the list the wifi driver will act like we are in US and that can solve the wifi problems for every users...

I need help to do that work please... Developers from XDA help me!!!!