Где-то в сети болтается патч, позволяющий-таки закончить сборку, но работает все равно через одно место.
В общем, наверно форум для этого и служит

. Сам спросил, сам и ответил.
восстановление monitor mode + packet injection для rt2800usb ( тестировалось на kali 2):
wget https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/backports-4.4.2-1.tar.gz
tar xzf backports-4.4.2-1.tar.gz
cd backports-4.4.2-1
wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch
patch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch
в файле ./drivers/net/wireless/rt2x00/rt2800lib.c найти и заменить
Было
void rt2800_config_filter(struct rt2x00_dev *rt2x00dev,
const unsigned int filter_flags)
{
u32 reg;
/*
* Start configuration steps.
* Note that the version error will always be dropped
* and broadcast frames will always be accepted since
* there is no filter for it at this time.
*/
rt2800_register_read(rt2x00dev, RX_FILTER_CFG, ®);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CRC_ERROR,
!(filter_flags & FIF_FCSFAIL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_PHY_ERROR,
!(filter_flags & FIF_PLCPFAIL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_TO_ME, 1);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_MY_BSSD, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_VER_ERROR, 1);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_MULTICAST,
!(filter_flags & FIF_ALLMULTI));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_BROADCAST, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_DUPLICATE, 1);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CF_END_ACK,
!(filter_flags & FIF_CONTROL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CF_END,
!(filter_flags & FIF_CONTROL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_ACK,
!(filter_flags & FIF_CONTROL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CTS,
!(filter_flags & FIF_CONTROL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_RTS,
!(filter_flags & FIF_CONTROL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_PSPOLL,
!(filter_flags & FIF_PSPOLL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_BA, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_BAR,
!(filter_flags & FIF_CONTROL));
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CNTL,
!(filter_flags & FIF_CONTROL));
rt2800_register_write(rt2x00dev, RX_FILTER_CFG, reg);
}
Стало
void rt2800_config_filter(struct rt2x00_dev *rt2x00dev,
const unsigned int filter_flags)
{
u32 reg;
/*
* Start configuration steps.
* Note that the version error will always be dropped
* and broadcast frames will always be accepted since
* there is no filter for it at this time.
*/
rt2800_register_read(rt2x00dev, RX_FILTER_CFG, ®);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CRC_ERROR,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_PHY_ERROR,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_TO_ME, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_MY_BSSD, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_VER_ERROR, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_MULTICAST,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_BROADCAST, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_DUPLICATE, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CF_END_ACK,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CF_END,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_ACK,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CTS,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_RTS,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_PSPOLL,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_BA, 0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_BAR,0);
rt2x00_set_field32(®, RX_FILTER_CFG_DROP_CNTL,0);
rt2800_register_write(rt2x00dev, RX_FILTER_CFG, reg);
}
sudo make clean
sudo make defconfig-wifi
sudo make
sudo make install
sudo update-initramfs -u
reboot
Работает несколько необычно - нет нужды адаптер переводить в режим монитора, одновременно работают оба режима
Взято с ресурса
https://forum.antichat.ru/