继续阅读Determining RF Angle of Arrival Using COTS Antenna Arrays: A Field Evaluation
月度归档: 2018 年 5 月
ubuntu 16.04规避srsLTE报告”Sequence number synch failure“的BUG
参考ubuntu 16.04系统LimeSDR使用srsLTE搭建LTE实验环境构建实验环境,在实际运行时候,手机设备无法正常连接到基站,报告如下错误信息:
Received Attach Request Attach Request -- IMSI-style attach request Attach Request -- UE is already attached.Attach request -- IMSI: 208920100001100 Attach request -- eNB-UE S1AP Id: 3, MME-UE S1AP Id: 3 Attach request -- Attach type: 2 Attach Request -- UE Network Capabilities EEA: 11110000 Attach Request -- UE Network Capabilities EIA: 11110000 Attach Request -- MS Network Capabilities Present: true PDN Connectivity Request -- EPS Bearer Identity requested: 0 PDN Connectivity Request -- Procedure Transaction Id: 1 PDN Connectivity Request -- ESM Information Transfer requested: false Downlink NAS: Sending Authentication Request Plain UL NAS: Authentication Failure Sequence number synch failure Downlink NAS: Sent Authentication Request DL NAS: Sent Downlink NAS Message. DL NAS Count=0, UL NAS count=1 DL NAS: MME UE S1AP id 3 Plain UL NAS: Authentication Failure Sequence number synch failure Downlink NAS: Sent Authentication Request DL NAS: Sent Downlink NAS Message. DL NAS Count=0, UL NAS count=2 DL NAS: MME UE S1AP id 3 Received UE Context Release Request. MME-UE S1AP Id 3 UE is not ECM connected. No need to release S1-U. MME UE S1AP Id 3 UE is ECM IDLE.
初步分析BUG
的原因是如下函数在重新生成同步序列号的时候出现错误:
bool resync_sqn_milenage(uint64_t imsi, uint8_t *auts)
目前还在分析,目前出现这个现象的时候,当EPC退出时候,应用一定向user_db.csv回写000000001b02,一旦出现这个数字,我们就没办法注册设备了。
目前的应对办法是把user_db.csv最后的SQN,要比设备最后一次通信记录的数据号大,如果SQN数字复位,可以让设备关机,应该就从0开始了。此问题还在持续跟进中。
OS X EI Caption(10.11.6)通过SSH启用VNC远程桌面
家里的一台Mac mini(Early 2009)
安装了OS X EI Caption
系统,启用了SSH
与VNC
远程桌面。但是在某次系统更新的时候,由于涉及到Remote Desktop Client
的更新,导致无法正常登录VNC
远程桌面,但是可以正常使用SSH
登录。
则使用如下命令重新启用VNC
远程桌面服务:
$ export VNC_PASSWORD=mypasswd $ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes -setreqperm -reqperm yes -clientopts -setvncpw -vncpw $VNC_PASSWORD -restart -agent -privs -all
如果需要关闭VNC
远程桌面服务,则使用如下命令:
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -configure -access -off
参考链接
ubuntu 16.04用HackRF和Gqrx来听FM广播
$ sudo apt-get install hackrf $ sudo apt-get install gqrx-sdr #gqrx的配置文件在~/.config/gqrx目录下,如果出现问题,直接删除这个目录即可 $ sudo gqrx
SecureAngle: Improving Wireless Security Using Angle-of-Arrival Information
SecureAngle: Improving Wireless Security Using
Angle-of-Arrival Information
继续阅读SecureAngle: Improving Wireless Security Using Angle-of-Arrival Information
srsLTE使用LimeSDR代码分析PHY层流程
数据接收流向
RF处理线程
lib/src/phy/rf/rf_soapy_imp.c
int rf_soapy_recv_with_time(void *h,
void *data,
uint32_t nsamples,
bool blocking,
time_t *secs,
double *frac_secs)
->
lib/src/phy/rf/rf_dev.h
int (*srslte_rf_recv_with_time)(void *h, void *data, uint32_t nsamples,
bool blocking, time_t *secs,double *frac_secs)
->
lib/src/radio/radio_multi.cc
bool rx_now(cf_t *buffer[SRSLTE_MAX_PORTS], uint32_t nof_samples, srslte_timestamp_t* rxd_time)
->
srsenb/src/phy/txrx.cc
void run_thread() 接收完成后,触发信号,通知后续线程,也就是后面的发送接收线程。
eNB收发处理线程
srsenb/src/phy/phch_worker.cc
void work_imp();
->
srsenb/src/phy/phch_worker.cc
void srslte_enb_ul_fft(srslte_enb_ul_t *q)
填充关键的srslte_enb_ul_t->sf_symbols,这个指针在 int srslte_ofdm_rx_init(srslte_ofdm_t *q, srslte_cp_t cp_type, cf_t *in_buffer,cf_t *out_buffer,uint32_t max_prb)函数中被赋值,被共享,因此后面会不好理解何时srslte_enb_ul_t->sf_symbols被赋值
另外就是关注 int srslte_enb_ul_init(srslte_enb_ul_t *q,cf_t *in_buffer,uint32_t max_prb)中对于signal_buffer_rx的共享方式,也能解释后面的不需要拷贝内存的操作,主要就是指针被共享了。
srsenb/src/phy/phch_worker.cc
int decode_pucch()
->
lib/src/phy/enb/enb_ul.c
int srslte_enb_ul_get_pucch(srslte_enb_ul_t *q, uint16_t rnti,
uint32_t pdcch_n_cce, uint32_t sf_rx,
srslte_uci_data_t *uci_data)
->
lib/src/phy/enb/enb_ul.c
int get_pucch(srslte_enb_ul_t *q, uint16_t rnti,
uint32_t pdcch_n_cce, uint32_t sf_rx,
srslte_uci_data_t *uci_data, uint8_t bits[SRSLTE_PUCCH_MAX_BITS], uint32_t nof_bits)
->
lib/src/phy/phch/pusch.c
int srslte_pusch_decode(srslte_pusch_t *q,
srslte_pusch_cfg_t *cfg, srslte_softbuffer_rx_t *softbuffer,
cf_t *sf_symbols,
cf_t *ce, float noise_estimate, uint16_t rnti,
uint8_t *data, srslte_cqi_value_t *cqi_value, srslte_uci_data_t *uci_data)
解码函数在pucch.c,pusch.c中都存在 pucch主要是在上行上传送控制信息,cqi,ri,pmi和harq的应答 pusch除了传送控制信息外还要传送上行数据 两者在频域上所处的位置不同,pucch处于频带的两端,pusch处于中间,占据绝大部分资源 因此我们这里主要关注pusch
->
lib/src/phy/modem/demod_soft.c
int srslte_demod_soft_demodulate_s(srslte_mod_t modulation, const cf_t* symbols, short* llr, int nsymbols)(QPSK解码)