WiFi stack on N900 - my notes
This post is doing to be a data dump of all my findings/research/etc on the N900 WiFi stack. I wont be covering anything in-kernel (since I am not a kernel guy), anything that's not N900/Maemo specific (e.g. wireless-tools) or that's not WiFi specific (e.g. icd2)
The following components are involved in the WiFi stack on the N900: eapd (handles cryptographic stuff for connecting to secure WiFi access points) libicd_network_eap.so (provides EAP support in ICD2) libicd_network_ipv4.so (provides ipv4 support in ICD2) libicd_network_wlan.so (core ICD2 plugin for WiFi) libicd_network_wps.so (provides WPS support in ICD2) wlancond (main daemon that handles WiFi) wl1251-cal (reads data from cal and sends it to the WiFi chip including MAC address and calibration data) wlancond was made open source by Nokia. wl1251-cal and libicd_network_wlan.so have since been cloned by the community and are now open source. The others (eapd, libicd_network_eap.so, libicd_network_ipv4.so and libicd_network_wps.so) remain closed source. In the next post I will describe all the dbus interfaces that these components expose to the outside world (i.e. any method calls they expose for other components to call and any signals they sent to other components) as well as some stuff about who needs those dbus interfaces. After that I will describe any gconf keys or other things that these blobs deal with. |
Re: WiFi stack on N900 - my notes
libicd_network_eap.so does not listen for any dbus signals, expose any dbus method calls or set any gconf keys. Therefore there is nothing exposed to the outside world by that library that needs to be exposed by any replacement.
libicd_network_ipv4.so does not listen for any dbus signals, expose any dbus method calls or set any gconf keys. Therefore there is nothing exposed to the outside world by that library that needs to be exposed by any replacement. libicd_network_wlan.so does not listen for any dbus signals, expose any dbus method calls or set any gconf keys. Therefore there is nothing exposed to the outside world by that library that needs to be exposed by any replacement. libicd_network_wps.so does not listen for any dbus signals, expose any dbus method calls or set any gconf keys. Therefore there is nothing exposed to the outside world by that library that needs to be exposed by any replacement. wlancond exposes a dbus interface on com.nokia.wlancond. Outside of the WiFi stack mentioned in the first post, the only user of that interface is libconnui_iapsettings.so which calls com.nokia.wlancond.request.scan and listens for com.nokia.wlancond.signal.scan_results wlancond does not set any gconf keys or expose any other external interface. eapd exposes a dbus interface on com.nokia.eap. Outside of the WiFi stack mentioned in the first post, the only users of that interface is libiap_dialog_wps.so which listens for com.nokia.eap.signal.wps_success. eapd sets some gconf keys. eapd does not expose any other external interface. The next post will document what gconf keys eapd sets. |
Re: WiFi stack on N900 - my notes
Ok, it looks like libicd_network_ipv4 is not part of the WiFi stack after all and shouldn't be replaced as part of any replacement of that stack (since its also used by the GPRS stuff).
So the items considered part of the WiFi stack are: eapd wlancond libicd_network_eap.so libicd_network_wlan.so libicd_network_wps.so wl1251-cal is also part of the stack but we dont need to worry about it from the perspective of gconf or dbus stuff. |
Re: WiFi stack on N900 - my notes
Here is a full list of all the gconf keys that are referenced by the various parts of the WiFi stack:
libicd_network_eap /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/nai /system/osso/connectivity/IAP/%s/wlan_security libicd_network_wps /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/wlan_hidden /system/osso/connectivity/IAP/%s/wlan_ssid /system/osso/connectivity/IAP/%s/wlan_security /system/osso/connectivity/IAP/wlan_tx_power libicd_network_wlan /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/allow_wep_ciphers_in_WPA /system/osso/connectivity/IAP/%s/EAP_wpa2_only_mode /system/osso/connectivity/IAP/%s/powersave_after_scan /system/osso/connectivity/IAP/%s/wlan_hidden /system/osso/connectivity/IAP/%s/wlan_powersave /system/osso/connectivity/IAP/%s/wlan_adhoc_channel /system/osso/connectivity/IAP/%s/wlan_wepdefkey /system/osso/connectivity/IAP/%s/wlan_ssid /system/osso/connectivity/IAP/%s/wlan_wepkey1 /system/osso/connectivity/IAP/%s/wlan_wepkey2 /system/osso/connectivity/IAP/%s/wlan_wepkey3 /system/osso/connectivity/IAP/%s/wlan_wepkey4 /system/osso/connectivity/IAP/%s/wlan_security /system/osso/connectivity/IAP/%s/ /system/osso/connectivity/IAP/wlan_tx_power wlancond /system/osso/connectivity/IAP/allow_wep_ciphers_in_WPA /system/osso/connectivity/IAP/wlan_sleep_timeout /system/osso/connectivity/IAP/inactive_wlan_sleep_timeout /system/osso/connectivity/IAP/wlancond_debug_level eapd /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/EAPOL_CORE_send_start_interval /system/osso/connectivity/IAP/%s/EAPOL_CORE_starts_max_count /system/osso/connectivity/IAP/%s/EAPOL_key_state_TEST_group_key_update /system/osso/connectivity/IAP/%s/EAPOL_key_state_allow_missing_PMKID_in_message_1 /system/osso/connectivity/IAP/%s/EAPOL_key_state_allow_non_zero_mic_in_message_1 /system/osso/connectivity/IAP/%s/EAPOL_key_state_handshake_timeout /system/osso/connectivity/IAP/%s/EAPOL_key_state_indicate_pmkid_to_lower_layer /system/osso/connectivity/IAP/%s/EAPOL_key_state_pmksa_caching_timeout /system/osso/connectivity/IAP/%s/EAPOL_key_state_retransmission_counter /system/osso/connectivity/IAP/%s/EAPOL_key_state_retransmission_time /system/osso/connectivity/IAP/%s/EAPOL_key_state_skip_PMKID_key_data_in_message_1 /system/osso/connectivity/IAP/%s/EAP_CORE_failure_received_timeout /system/osso/connectivity/IAP/%s/EAP_CORE_process_EAP_Nak_immediately /system/osso/connectivity/IAP/%s/EAP_CORE_remove_session_timeout /system/osso/connectivity/IAP/%s/EAP_CORE_retransmission_counter /system/osso/connectivity/IAP/%s/EAP_CORE_session_timeout /system/osso/connectivity/IAP/%s/EAP_CORE_use_eap_expanded_type /system/osso/connectivity/IAP/%s/EAP_CORE_wait_eap_request_type_timeout /system/osso/connectivity/IAP/%s/EAP_FAST_send_piggypacked_eap_identity_request /system/osso/connectivity/IAP/%s/EAP_GTC_identity /system/osso/connectivity/IAP/%s/EAP_GTC_passcode /system/osso/connectivity/IAP/%s/EAP_GTC_use_eap_expanded_type /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_do_wrong_password_tests /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_password /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_password_prompt /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_use_eap_expanded_type /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_use_implicit_challenge /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_username /system/osso/connectivity/IAP/%s/EAP_SECURID_identity /system/osso/connectivity/IAP/%s/EAP_SECURID_passcode /system/osso/connectivity/IAP/%s/EAP_SECURID_use_eap_expanded_type /system/osso/connectivity/IAP/%s/EAP_SESSION_use_reset_session /system/osso/connectivity/IAP/%s/EAP_SIMPLE_CONFIG_check_identifier_of_eap_identity _response /system/osso/connectivity/IAP/%s/EAP_SIMPLE_CONFIG_check_nai_realm /system/osso/connectivity/IAP/%s/EAP_SIMPLE_CONFIG_device_password /system/osso/connectivity/IAP/%s/EAP_SIMPLE_CONFIG_server_device_password /system/osso/connectivity/IAP/%s/EAP_SIMPLE_CONFIG_test_version /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_accepted_PEAP_versions /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_check_identifier_of_eap_identity_resp onse /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_check_nai_realm /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_cipher_suite /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_client_certificate_file /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_manual_realm /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_manual_username /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_max_count_of_session_resumes /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_server_accepted_PEAP_versions /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_use_eap_expanded_type /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_use_manual_realm /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_use_manual_username /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_use_tppd_tls_peap /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_used_PEAP_version /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_wait_eap_success_packet /system/osso/connectivity/IAP/%s/EAP_TLS_server_use_tppd_peapv1_acknowledge_hack /system/osso/connectivity/IAP/%s/EAP_TLS_test_version /system/osso/connectivity/IAP/%s/EAP_TLS_use_tppd_peapv1_acknowledge_hack /system/osso/connectivity/IAP/%s/EAP_TRACE_activate_only_trace_masks_always_and_err or /system/osso/connectivity/IAP/%s/EAP_TRACE_activate_trace_on_error /system/osso/connectivity/IAP/%s/EAP_TRACE_disable_traces /system/osso/connectivity/IAP/%s/EAP_TRACE_enable_message_data_traces /system/osso/connectivity/IAP/%s/EAP_TRACE_enable_ok_return_traces /system/osso/connectivity/IAP/%s/EAP_TRACE_enable_timer_queue_traces /system/osso/connectivity/IAP/%s/EAP_TRACE_enable_timer_traces /system/osso/connectivity/IAP/%s/EAP_certificate_password /system/osso/connectivity/IAP/%s/EAP_default_type /system/osso/connectivity/IAP/%s/EAP_disable_certificate_check /system/osso/connectivity/IAP/%s/EAP_manual_username /system/osso/connectivity/IAP/%s/EAP_outer_identity_decoration /system/osso/connectivity/IAP/%s/EAP_outer_identity_routing /system/osso/connectivity/IAP/%s/EAP_server_default_type /system/osso/connectivity/IAP/%s/EAP_use_manual_username /system/osso/connectivity/IAP/%s/EAP_wpa_preshared_key /system/osso/connectivity/IAP/%s/EAP_wpa_preshared_passphrase /system/osso/connectivity/IAP/%s/PEAP_accepted_tunneled_server_types /system/osso/connectivity/IAP/%s/PEAP_allow_tunneled_session_resumption /system/osso/connectivity/IAP/%s/PEAP_server_allow_tunneled_session_resumption /system/osso/connectivity/IAP/%s/PEAP_tunneled_eap_type /system/osso/connectivity/IAP/%s/PEAP_tunneled_types /system/osso/connectivity/IAP/%s/PEAPv1_server_use_extensions_request /system/osso/connectivity/IAP/%s/SIMPLE_CONFIG_error_message_received_timeout /system/osso/connectivity/IAP/%s/TLS_client_allows_empty_certificate_authorities_li st /system/osso/connectivity/IAP/%s/TLS_server_authenticates_client /system/osso/connectivity/IAP/%s/TLS_server_authenticates_client_policy_in_client /system/osso/connectivity/IAP/%s/TLS_server_authenticates_client_policy_in_server /system/osso/connectivity/IAP/%s/TLS_server_offers_new_session_id /system/osso/connectivity/IAP/%s/TLS_server_sends_empty_certificate_authorities_lis t /system/osso/connectivity/IAP/%s/TLS_use_separate_tls_record /system/osso/connectivity/IAP/%s/WPA_PSK /system/osso/connectivity/IAP/%s/wlan_security /system/osso/connectivity/IAP/%s/wlan_ssid /system/osso/connectivity/IAP/%s/wlan_wepdefkey /system/osso/connectivity/IAP/%s/wlan_wepkey1 /system/osso/connectivity/IAP/%s/wlan_wepkey2 /system/osso/connectivity/IAP/%s/wlan_wepkey3 /system/osso/connectivity/IAP/%s/wlan_wepkey4 The %s is replaced with the unique GUID for each iap that exists. Next up I will document which of those keys are referenced by things other than the WiFi stack. |
Re: WiFi stack on N900 - my notes
Turns out that libicd-network-ipv4.so isn't used by the GPRS plugin after all and can therefore be considered part of the WiFi stack.
It accesses the following gconf keys: /system/osso/connectivity/IAP/%s/ipv4_autodns /system/osso/connectivity/IAP/linklocal_wlan_infra /system/osso/connectivity/IAP/%s/ipv4_dns1 /system/osso/connectivity/IAP/%s/ipv4_dns2 /system/osso/connectivity/IAP/%s/ipv4_dns3 /system/osso/connectivity/IAP/%s/ipv4_type /system/osso/connectivity/IAP/%s/ipv4_address /system/osso/connectivity/IAP/%s/ipv4_netmask /system/osso/connectivity/IAP/%s/ipv4_gateway |
Re: WiFi stack on N900 - my notes
icd2 references:
/system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/wlan_security libconic.so.0.0.0 references: /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/type More to come later when I investigate libconnsettings.so.0.0.0, libconnui.so.0.0.0, libconnui_iapsettings.so.0.0.0, libiap_wizard_wlan.so, libicd_policy_always_online.so, libicd_policy_any.so, libicd_settings.so.1.0.0, libinternetsettings.so, libqicdbearer.so, libQtNetwork.so.4.7.0 and anything I can find in extras-* that references this stuff (if any of the above libraries expose functions where the caller of the function determines which entry under /system/osso/connectivity/IAP to return obviously I will investigate any users of that function. |
Re: WiFi stack on N900 - my notes
libconnsettings.so.0.0.0 exposes an API that is in turn used by libconninet.so.0.0.0. That is in turn used by libQtBearer.so.1.0.2.
libQtBearer.so.1.0.2 references the following gconf keys: /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/wlan_security /system/osso/connectivity/IAP/%s/EAP_wpa2_only_mode /system/osso/connectivity/IAP/%s/wlan_ssid libconnui.so.0.0.0 references: /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/wlan_ssid /system/osso/connectivity/IAP/wlan_tx_power libconnui_iapsettings.so.0.0.0 references: /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/wlan_tx_power /system/osso/connectivity/IAP/%s/EAP_GTC_identity /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_password /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_username /system/osso/connectivity/IAP/%s/EAP_TLS_PEAP_client_certificate_file /system/osso/connectivity/IAP/%s/EAP_default_type /system/osso/connectivity/IAP/%s/EAP_wpa_preshared_passphrase /system/osso/connectivity/IAP/%s/PEAP_tunneled_eap_type /system/osso/connectivity/IAP/%s/ipv4_address /system/osso/connectivity/IAP/%s/ipv4_autodns /system/osso/connectivity/IAP/%s/ipv4_dns1 /system/osso/connectivity/IAP/%s/ipv4_dns2 /system/osso/connectivity/IAP/%s/ipv4_gateway /system/osso/connectivity/IAP/%s/ipv4_netmask /system/osso/connectivity/IAP/%s/ipv4_type /system/osso/connectivity/IAP/%s/wlan_security /system/osso/connectivity/IAP/%s/wlan_ssid /system/osso/connectivity/IAP/%s/wlan_hidden /system/osso/connectivity/IAP/%s/wlan_wepkey1 libiap_dialog_password.so references: /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_password_prompt /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_password /system/osso/connectivity/IAP/%s/EAP_MSCHAPV2_username libiap_dialog_others.so references: /system/osso/connectivity/IAP/%s/EAP_wpa_preshared_key /system/osso/connectivity/IAP/%s/EAP_wpa_preshared_passphrase libiap_dialog_wps.so references: /system/osso/connectivity/IAP/%s/EAP_SIMPLE_CONFIG_device_password libiap_wizard_wlan.so references: /system/osso/connectivity/IAP/wlan_tx_power libicd_policy_any.so references: /system/osso/connectivity/IAP/%s/type libicd_settings.so.1.0.0 references: /system/osso/connectivity/IAP/%s/type libqicdbearer.so references: /system/osso/connectivity/IAP/%s/name /system/osso/connectivity/IAP/%s/type /system/osso/connectivity/IAP/%s/temporary /system/osso/connectivity/IAP/%s/EAP_wpa2_only_mode /system/osso/connectivity/IAP/%s/wlan_ssid /system/osso/connectivity/IAP/%s/wlan_security libQtNetwork.so.4.7.0 references: /system/osso/connectivity/IAP/%s/name Unless I missed something (which is entirely possible) that should be details of everything in gconf that might be relavent for replacing the WiFi stack. Coming up next, some more dbus information: |
Re: WiFi stack on N900 - my notes
This is a reference to the relavent dbus method calls and signals that are referenced in some way by the parts of the WiFi stack:
eapd references: com.nokia.eap.request.wpa_ie_push com.nokia.eap.request.disconnect com.nokia.eap.request.status com.nokia.eap.request.wpa_mic_failure com.nokia.eap.request.disassociate com.nokia.eap.request.associate com.nokia.eap.request.interface com.nokia.eap.request.check_pmksa_cache com.nokia.eap.signal.disconnected com.nokia.eap.signal.wps_fail com.nokia.eap.signal.wps_success com.nokia.eap.signal.auth_status com.nokia.icd_ui.show_private_key_passwd_dlg com.nokia.icd_ui.show_gtc_dlg com.nokia.icd_ui.show_server_cert_dlg com.nokia.icd_ui.show_mschap_change_dlg com.nokia.icd_ui.show_passwd_dlg com.nokia.icd_ui.passwd com.nokia.icd_ui.mschap_change com.nokia.icd_ui.gtc_response com.nokia.icd_ui.private_key_passwd com.nokia.icd_ui.server_cert com.nokia.wlancond.request.set_powersave com.nokia.wlancond.request.disassociate com.nokia.wlancond.request.set_pmksa wlancond references: com.nokia.eap.request.check_pmksa_cache com.nokia.eap.request.disassociate com.nokia.eap.request.associate com.nokia.eap.request.wpa_mic_failure com.nokia.eap.request.wpa_ie_push com.nokia.wlancond.request.settings_and_connect com.nokia.wlancond.request.scan com.nokia.wlancond.request.status com.nokia.wlancond.request.interface com.nokia.wlancond.request.connection_status com.nokia.wlancond.request.set_pmksa com.nokia.wlancond.request.set_powersave com.nokia.wlancond.request.disconnect com.nokia.wlancond.request.disassociate com.nokia.wlancond.signal.registrar_error com.nokia.wlancond.signal.disconnected com.nokia.wlancond.signal.connected com.nokia.wlancond.signal.scan_results libicd_network_eap.so references: com.nokia.eap.request.interface com.nokia.eap.request.nai_update_req com.nokia.eap.signal.auth_status com.nokia.eap.signal.disconnected com.nokia.eap.signal.wps_fail com.nokia.eap.signal.wps_success libicd_network_ipv4.so references: com.nokia.icd.autoconf.autoconf_changed libicd_network_wlan.so references: com.nokia.wlancond.request.status com.nokia.wlancond.request.disconnect com.nokia.wlancond.request.set_powersave com.nokia.wlancond.request.settings_and_connect com.nokia.wlancond.signal.scan_results com.nokia.wlancond.signal.connected com.nokia.wlancond.signal.disconnected com.nokia.wlancond.signal.registrar_error libicd_network_wps.so references: com.nokia.eap.signal.wps_success com.nokia.wlancond.request.scan com.nokia.wlancond.signal.scan_results com.nokia.wps_ui.method_sig com.nokia.wps_ui.show_select_method Other users of those same dbus interfaces: 50_ipv4_network_setup (shell script) references: com.nokia.icd.autoconf.autoconf_changed libiap_dialog_wps.so references: com.nokia.eap.signal.wps_success com.nokia.wps_ui.method_sig com.nokia.wps_ui.show_select_method libconnui_iapsettings.so.0.0.0 references: com.nokia.wlancond.request.scan com.nokia.wlancond.signal.scan_results libiap_dialog_gtc_challenge.so references: com.nokia.icd_ui.show_gtc_dlg com.nokia.icd_ui.gtc_response libiap_dialog_mschap_change.so references: com.nokia.icd_ui.show_mschap_change_dlg com.nokia.icd_ui.mschap_change libiap_dialog_password.so references: com.nokia.icd_ui.show_passwd_dlg com.nokia.icd_ui.passwd libiap_dialog_private_key_pw.so references: com.nokia.icd_ui.show_private_key_passwd_dlg com.nokia.icd_ui.private_key_passwd libiap_dialog_server_cert.so references: com.nokia.icd_ui.show_server_cert_dlg com.nokia.icd_ui.server_cert And now that should be all the dbus and gconf and other information relavent to replacing the WiFi stack. |
All times are GMT. The time now is 17:39. |
vBulletin® Version 3.8.8