diff --git a/doc/manuals/chapters/counters_generated.adoc b/doc/manuals/chapters/counters_generated.adoc
new file mode 100644
index 0000000..2ee425e
--- /dev/null
+++ b/doc/manuals/chapters/counters_generated.adoc
@@ -0,0 +1,178 @@
+// autogenerated by show asciidoc counters
+These counters and their description based on Osmo-PCU 0.4.0.4-8d55 (Osmo-PCU).
+
+// generating tables for rate_ctr_group
+// rate_ctr_group table BSSGP Peer Statistics
+.bssgp:bss_ctx - BSSGP Peer Statistics 
+[options="header"]
+|===
+| Name | Reference | Description
+| packets:in | <<bssgp:bss_ctx_packets:in>> | Packets at BSSGP Level ( In)
+| packets:out | <<bssgp:bss_ctx_packets:out>> | Packets at BSSGP Level (Out)
+| bytes:in | <<bssgp:bss_ctx_bytes:in>> | Bytes at BSSGP Level   ( In)
+| bytes:out | <<bssgp:bss_ctx_bytes:out>> | Bytes at BSSGP Level   (Out)
+| blocked | <<bssgp:bss_ctx_blocked>> | BVC Blocking count
+| discarded | <<bssgp:bss_ctx_discarded>> | BVC LLC Discarded count
+| status | <<bssgp:bss_ctx_status>> | BVC Status count
+|===
+// rate_ctr_group table NSVC Peer Statistics
+.ns:nsvc - NSVC Peer Statistics 
+[options="header"]
+|===
+| Name | Reference | Description
+| packets:in | <<ns:nsvc_packets:in>> | Packets at NS Level  ( In)
+| packets:out | <<ns:nsvc_packets:out>> | Packets at NS Level  (Out)
+| bytes:in | <<ns:nsvc_bytes:in>> | Bytes at NS Level    ( In)
+| bytes:out | <<ns:nsvc_bytes:out>> | Bytes at NS Level    (Out)
+| blocked | <<ns:nsvc_blocked>> | NS-VC Block count         
+| dead | <<ns:nsvc_dead>> | NS-VC gone dead count     
+| replaced | <<ns:nsvc_replaced>> | NS-VC replaced other count
+| nsei-chg | <<ns:nsvc_nsei-chg>> | NS-VC changed NSEI count  
+| inv-nsvci | <<ns:nsvc_inv-nsvci>> | NS-VCI was invalid count  
+| inv-nsei | <<ns:nsvc_inv-nsei>> | NSEI was invalid count    
+| lost:alive | <<ns:nsvc_lost:alive>> | ALIVE ACK missing count   
+| lost:reset | <<ns:nsvc_lost:reset>> | RESET ACK missing count   
+|===
+// rate_ctr_group table NSVC Peer Statistics
+.ns:nsvc - NSVC Peer Statistics 
+[options="header"]
+|===
+| Name | Reference | Description
+| packets:in | <<ns:nsvc_packets:in>> | Packets at NS Level  ( In)
+| packets:out | <<ns:nsvc_packets:out>> | Packets at NS Level  (Out)
+| bytes:in | <<ns:nsvc_bytes:in>> | Bytes at NS Level    ( In)
+| bytes:out | <<ns:nsvc_bytes:out>> | Bytes at NS Level    (Out)
+| blocked | <<ns:nsvc_blocked>> | NS-VC Block count         
+| dead | <<ns:nsvc_dead>> | NS-VC gone dead count     
+| replaced | <<ns:nsvc_replaced>> | NS-VC replaced other count
+| nsei-chg | <<ns:nsvc_nsei-chg>> | NS-VC changed NSEI count  
+| inv-nsvci | <<ns:nsvc_inv-nsvci>> | NS-VCI was invalid count  
+| inv-nsei | <<ns:nsvc_inv-nsei>> | NSEI was invalid count    
+| lost:alive | <<ns:nsvc_lost:alive>> | ALIVE ACK missing count   
+| lost:reset | <<ns:nsvc_lost:reset>> | RESET ACK missing count   
+|===
+// rate_ctr_group table BTS Statistics
+.bts - BTS Statistics 
+[options="header"]
+|===
+| Name | Reference | Description
+| tbf:dl:alloc | <<bts_tbf:dl:alloc>> | TBF DL Allocated     
+| tbf:dl:freed | <<bts_tbf:dl:freed>> | TBF DL Freed         
+| tbf:dl:aborted | <<bts_tbf:dl:aborted>> | TBF DL Aborted       
+| tbf:ul:alloc | <<bts_tbf:ul:alloc>> | TBF UL Allocated     
+| tbf:ul:freed | <<bts_tbf:ul:freed>> | TBF UL Freed         
+| tbf:ul:aborted | <<bts_tbf:ul:aborted>> | TBF UL Aborted       
+| tbf:reused | <<bts_tbf:reused>> | TBF Reused           
+| tbf:alloc:algo-a | <<bts_tbf:alloc:algo-a>> | TBF Alloc Algo A     
+| tbf:alloc:algo-b | <<bts_tbf:alloc:algo-b>> | TBF Alloc Algo B     
+| tbf:failed:egprs-only | <<bts_tbf:failed:egprs-only>> | TBF Failed EGPRS-only
+| rlc:sent | <<bts_rlc:sent>> | RLC Sent             
+| rlc:resent | <<bts_rlc:resent>> | RLC Resent           
+| rlc:restarted | <<bts_rlc:restarted>> | RLC Restarted        
+| rlc:stalled | <<bts_rlc:stalled>> | RLC Stalled          
+| rlc:nacked | <<bts_rlc:nacked>> | RLC Nacked           
+| rlc:final_block_resent | <<bts_rlc:final_block_resent>> | RLC Final Blk resent 
+| rlc:ass:timedout | <<bts_rlc:ass:timedout>> | RLC Assign Timeout   
+| rlc:ass:failed | <<bts_rlc:ass:failed>> | RLC Assign Failed    
+| rlc:ack:timedout | <<bts_rlc:ack:timedout>> | RLC Ack Timeout      
+| rlc:ack:failed | <<bts_rlc:ack:failed>> | RLC Ack Failed       
+| rlc:rel:timedout | <<bts_rlc:rel:timedout>> | RLC Release Timeout  
+| rlc:late-block | <<bts_rlc:late-block>> | RLC Late Block       
+| rlc:sent-dummy | <<bts_rlc:sent-dummy>> | RLC Sent Dummy       
+| rlc:sent-control | <<bts_rlc:sent-control>> | RLC Sent Control     
+| rlc:dl_bytes | <<bts_rlc:dl_bytes>> | RLC DL Bytes         
+| rlc:dl_payload_bytes | <<bts_rlc:dl_payload_bytes>> | RLC DL Payload Bytes 
+| rlc:ul_bytes | <<bts_rlc:ul_bytes>> | RLC UL Bytes         
+| rlc:ul_payload_bytes | <<bts_rlc:ul_payload_bytes>> | RLC UL Payload Bytes 
+| decode:errors | <<bts_decode:errors>> | Decode Errors        
+| sba:allocated | <<bts_sba:allocated>> | SBA Allocated        
+| sba:freed | <<bts_sba:freed>> | SBA Freed            
+| sba:timedout | <<bts_sba:timedout>> | SBA Timeout          
+| llc:timeout | <<bts_llc:timeout>> | Timedout Frames      
+| llc:dropped | <<bts_llc:dropped>> | Dropped Frames       
+| llc:scheduled | <<bts_llc:scheduled>> | Scheduled Frames     
+| llc:dl_bytes | <<bts_llc:dl_bytes>> | RLC encapsulated PDUs
+| llc:ul_bytes | <<bts_llc:ul_bytes>> | full PDUs received   
+| rach:requests | <<bts_rach:requests>> | RACH requests        
+| 11bit_rach:requests | <<bts_11bit_rach:requests>> | 11BIT_RACH requests  
+| spb:uplink_first_segment | <<bts_spb:uplink_first_segment>> | First seg of UL SPB  
+| spb:uplink_second_segment | <<bts_spb:uplink_second_segment>> | Second seg of UL SPB 
+| spb:downlink_first_segment | <<bts_spb:downlink_first_segment>> | First seg of DL SPB  
+| spb:downlink_second_segment | <<bts_spb:downlink_second_segment>> | Second seg of DL SPB 
+| immediate:assignment_UL | <<bts_immediate:assignment_UL>> | Immediate Assign UL  
+| immediate:assignment_rej | <<bts_immediate:assignment_rej>> | Immediate Assign Rej 
+| immediate:assignment_DL | <<bts_immediate:assignment_DL>> | Immediate Assign DL  
+| channel:request_description | <<bts_channel:request_description>> | Channel Request Desc 
+| pkt:ul_assignment | <<bts_pkt:ul_assignment>> | Packet UL Assignment 
+| pkt:access_reject | <<bts_pkt:access_reject>> | Packet Access Reject 
+| pkt:dl_assignment | <<bts_pkt:dl_assignment>> | Packet DL Assignment 
+| ul:control | <<bts_ul:control>> | UL control Block     
+| ul:assignment_poll_timeout | <<bts_ul:assignment_poll_timeout>> | UL Assign Timeout    
+| ul:assignment_failed | <<bts_ul:assignment_failed>> | UL Assign Failed     
+| dl:assignment_timeout | <<bts_dl:assignment_timeout>> | DL Assign Timeout    
+| dl:assignment_failed | <<bts_dl:assignment_failed>> | DL Assign Failed     
+| pkt:ul_ack_nack_timeout | <<bts_pkt:ul_ack_nack_timeout>> | PUAN Poll Timeout    
+| pkt:ul_ack_nack_failed | <<bts_pkt:ul_ack_nack_failed>> | PUAN poll Failed     
+| pkt:dl_ack_nack_timeout | <<bts_pkt:dl_ack_nack_timeout>> | PDAN poll Timeout    
+| pkt:dl_ack_nack_failed | <<bts_pkt:dl_ack_nack_failed>> | PDAN poll Failed     
+| gprs:downlink_cs1 | <<bts_gprs:downlink_cs1>> | CS1 downlink         
+| gprs:downlink_cs2 | <<bts_gprs:downlink_cs2>> | CS2 downlink         
+| gprs:downlink_cs3 | <<bts_gprs:downlink_cs3>> | CS3 downlink         
+| gprs:downlink_cs4 | <<bts_gprs:downlink_cs4>> | CS4 downlink         
+| egprs:downlink_mcs1 | <<bts_egprs:downlink_mcs1>> | MCS1 downlink        
+| egprs:downlink_mcs2 | <<bts_egprs:downlink_mcs2>> | MCS2 downlink        
+| egprs:downlink_mcs3 | <<bts_egprs:downlink_mcs3>> | MCS3 downlink        
+| egprs:downlink_mcs4 | <<bts_egprs:downlink_mcs4>> | MCS4 downlink        
+| egprs:downlink_mcs5 | <<bts_egprs:downlink_mcs5>> | MCS5 downlink        
+| egprs:downlink_mcs6 | <<bts_egprs:downlink_mcs6>> | MCS6 downlink        
+| egprs:downlink_mcs7 | <<bts_egprs:downlink_mcs7>> | MCS7 downlink        
+| egprs:downlink_mcs8 | <<bts_egprs:downlink_mcs8>> | MCS8 downlink        
+| egprs:downlink_mcs9 | <<bts_egprs:downlink_mcs9>> | MCS9 downlink        
+| gprs:uplink_cs1 | <<bts_gprs:uplink_cs1>> | CS1 Uplink           
+| gprs:uplink_cs2 | <<bts_gprs:uplink_cs2>> | CS2 Uplink           
+| gprs:uplink_cs3 | <<bts_gprs:uplink_cs3>> | CS3 Uplink           
+| gprs:uplink_cs4 | <<bts_gprs:uplink_cs4>> | CS4 Uplink           
+| egprs:uplink_mcs1 | <<bts_egprs:uplink_mcs1>> | MCS1 Uplink          
+| egprs:uplink_mcs2 | <<bts_egprs:uplink_mcs2>> | MCS2 Uplink          
+| egprs:uplink_mcs3 | <<bts_egprs:uplink_mcs3>> | MCS3 Uplink          
+| egprs:uplink_mcs4 | <<bts_egprs:uplink_mcs4>> | MCS4 Uplink          
+| egprs:uplink_mcs5 | <<bts_egprs:uplink_mcs5>> | MCS5 Uplink          
+| egprs:uplink_mcs6 | <<bts_egprs:uplink_mcs6>> | MCS6 Uplink          
+| egprs:uplink_mcs7 | <<bts_egprs:uplink_mcs7>> | MCS7 Uplink          
+| egprs:uplink_mcs8 | <<bts_egprs:uplink_mcs8>> | MCS8 Uplink          
+| egprs:uplink_mcs9 | <<bts_egprs:uplink_mcs9>> | MCS9 Uplink          
+|===
+// generating tables for osmo_stat_items
+NSVC Peer Statistics
+// osmo_stat_item_group table NSVC Peer Statistics
+.ns.nsvc - NSVC Peer Statistics 
+[options="header"]
+|===
+| Name | Reference | Description | Unit
+| alive.delay | <<ns.nsvc_alive.delay>> | ALIVE response time         | ms
+|===
+NSVC Peer Statistics
+// osmo_stat_item_group table NSVC Peer Statistics
+.ns.nsvc - NSVC Peer Statistics 
+[options="header"]
+|===
+| Name | Reference | Description | Unit
+| alive.delay | <<ns.nsvc_alive.delay>> | ALIVE response time         | ms
+|===
+BTS Statistics
+// osmo_stat_item_group table BTS Statistics
+.bts - BTS Statistics 
+[options="header"]
+|===
+| Name | Reference | Description | Unit
+| ms.present | <<bts_ms.present>> | MS Present            | 
+|===
+// generating tables for osmo_counters
+// ungrouped osmo_counters
+.ungrouped osmo counters
+[options="header"]
+|===
+| Name | Reference | Description
+|===
+
+
