- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm using the BCM43340/1 chip. Is there a way to force the chip to only use 80211.b mode? I am seeing the wl command, but is there a programmatic way to set this?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There is not function to set 802.11 b mode directly.
And you can try the following programmatic way.
[Wiced\wwd\internal\wwd_management.c]
wwd_management_wifi_on(...)
{
//Modify this parameter from GMODE_AUTO to GMODE_LEGACY_B
/* Set the GMode */
data = (uint32_t*) wwd_sdpcm_get_ioctl_buffer( &buffer, (uint16_t) 4 );
if ( data == NULL )
{
wiced_assert( "Could not get buffer for IOCTL", 0 != 0 );
return WWD_BUFFER_ALLOC_FAIL;
}
*data = (uint32_t) GMODE_AUTO;-->GMODE_LEGACY_B
retval = wwd_sdpcm_send_ioctl( SDPCM_SET, WLC_SET_GMODE, buffer, 0, WWD_STA_INTERFACE );
...
}
BTW, because BCM43340 is dual band, you need to disable 11n by using this function before setting b mode.
wiced_wifi_disable_11n_support(…)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the reply.
However, this doesn't seem to work. It just hangs my system immediately.
I am calling wiced_core_init(), disabling 11n, and then calling wiced_wlan_connectivity_init().
If I don't disable 11n, it hangs when setting GMODE_LEGACY_B. If I disable 11n, it hangs in the disable_11n function.
-Nick
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It seems that LegacyB is unsupported, at least for the BCM43341. Using the WL tool to send the WLC_SET_GMODE command, I am getting "Unsupported" back.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Nick Crast,
You have modified the GMODE but not disabled nmode.
You need to follow the below steps to make the device to use only B-mode:
1) First disable 11n mode.
2) Set the Gmode to legacy B mode.
modify the following functions in wwd_management_wifi_on()
/* Disable PHY N-Mode */
data = wwd_sdpcm_get_iovar_buffer( &buffer, sizeof(uint32_t), IOVAR_STR_NMODE );
if ( data == NULL )
{
wiced_assert( "Could not get buffer for IOCTL", 0 != 0 );
return WWD_BUFFER_ALLOC_FAIL;
}
*data = 0;
wwd_sdpcm_send_iovar( SDPCM_SET, buffer, NULL, WWD_STA_INTERFACE );
/* Set the GMode to legacy B*/
data = (uint32_t*) wwd_sdpcm_get_ioctl_buffer( &buffer, (uint16_t) 4 );
if ( data == NULL )
{
wiced_assert( "Could not get buffer for IOCTL", 0 != 0 );
return WWD_BUFFER_ALLOC_FAIL;
}
*data = (uint32_t) GMODE_LEGACY_B;
retval = wwd_sdpcm_send_ioctl( SDPCM_SET, WLC_SET_GMODE, buffer, 0, WWD_STA_INTERFACE );
if ( retval != WWD_SUCCESS )
{
/* Note: System may time out here if bus interrupts are not working properly */
WPRINT_WWD_ERROR(("Error setting gmode\n"));
return retval;
}
If you need more info please let me know.
Best Regards,
Ramesh Mylavarapu