Eu encontrei a solução finalmente ...
Ele não precisa apenas do wpa_supplicant, mas também do iwpriv, hostapd, dhcpd.
aqui está o que eu fiz para conexão direta wifi.
Modo de dispositivo (o Linux solicita conexão ao Android)
ifconfig wlan0 192.168.1.15 up
iwpriv wlan0 p2p_set enable=0
iwpriv wlan0 p2p_get status
iwpriv wlan0 p2p_get role
iwpriv wlan0 p2p_set enable=1
iwpriv wlan0 p2p_set intent=1
iwpriv wlan0 p2p_get status
iwpriv wlan0 p2p_set op_ch=6
iwpriv wlan0 p2p_set ssid=DIRECT-RT
iwpriv wlan0 p2p_set setDN="RTL8192CU"
iwlist wlan0 scan
iwpriv wlan0 p2p_get2 wpsCM=<MAC_ADDRESS_OF_TARGET_DEVICE>
iwpriv wlan0 p2p_get2 devN=<MAC_ADDRESS_OF_TARGET_DEVICE>
iwpriv wlan0 p2p_set prov_disc=<MAC_ADDRESS_OF_TARGET_DEVICE>
iwpriv wlan0 p2p_set got_wpsinfo=3
iwpriv wlan0 p2p_set nego=<MAC_ADDRESS_OF_TARGET_DEVICE>
wpa_supplicant -i wlan0 -c ./wpa_0_8.conf -B
wpa_cli wps_pbc <MAC_ADDRESS_OF_TARGET_DEVICE>
Modo GO (o Android solicita conexão ao Linux)
iwpriv wlan0 p2p_set enable=3
iwpriv wlan0 p2p_get status
iwpriv wlan0 p2p_get role
iwpriv wlan0 p2p_set intent=1
iwpriv wlan0 p2p_set op_ch=6
iwpriv wlan0 p2p_set ssid=DIRECT-RT
./hostapd -B ./p2p_hostapd.conf
<<<<< Request connection from Android >>>>
iwpriv wlan0 p2p_get peer_deva
iwpriv wlan0 p2p_get req_cm
iwpriv wlan0 p2p_set got_wpsinfo=3
iwpriv wlan0 p2p_get peer_ifa
./hostapd_cli wps_pbc any
ifconfig wlan0 192.168.1.254
dhcpd
Mas há algumas condições necessárias para a conexão Wi-Fi direta.
- Seu driver sem fio deve suportar o nl80211.
- Configure a opção 'nl80211' quando fizer MAKE wpa_supplicant, hostapd.
- arquivos de configuração do dhcpd. (dhcpd.conf, dhcpd.lease)
- wpa_supplicant, configurações hostapd (arquivos conf)
Espero que este artigo ajude quem quer wifi direto entre o Linux e o Android.
Obrigado.